You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何优化判断非质数的Python代码?当前代码质数判断正常但非质数时卡顿

修复质数判断代码的卡顿问题

你的代码处理非质数时卡顿的核心原因是找到因数后用了continue,导致循环变量a无法递增,直接陷入无限循环。比如测试i=4时,a=2会触发4%2==0,执行factors.append(a)后直接continue,a始终停在2,循环永远不会结束。另外原代码的质数判断逻辑也存在漏洞,只是可能你测试的场景刚好没暴露出来。

优化后的代码

i = int(input("Enter a number: "))
if i <= 1:
    print(f"The given number {i} is not a prime number")
elif i == 2:
    print(f"The given number {i} is a prime number")
else:
    is_prime = True
    # 只遍历到i的平方根即可,减少循环次数
    for a in range(2, int(i**0.5) + 1):
        if i % a == 0:
            is_prime = False
            break
    print(f"The given number {i} is a prime number" if is_prime else f"The given number {i} is not a prime number")

关键修复点

  • 删掉了会导致死循环的continue逻辑,找到因数后直接标记非质数并跳出循环
  • 优化遍历范围:只需要检查到i的平方根,因为如果i存在大于平方根的因数,必然对应一个更小的因数,这能大幅减少循环次数,提升效率
  • 补充了边界值处理(比如i<=1、i=2的情况),覆盖所有可能的输入场景

原代码的其他问题

  1. 逻辑冗余:用factors列表判断质数的方式复杂且容易出错,直接用布尔变量标记状态更简洁可靠
  2. 效率低下:原代码遍历到i本身,对于大数来说完全是不必要的性能浪费

内容的提问来源于stack exchange,提问作者user19409398

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 19:50:37