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

Python求第1000个质数代码调试:计数器异常求助

问题分析与解决

代码失效原因

  1. for循环强制重置count变量:你用for count in range(0,1001)控制循环,这会让count在每次迭代时被range序列里的下一个值覆盖。哪怕你在找到质数时执行count +=1,下一次循环count还是会被range的数值重新赋值,这个自增操作完全无效。
  2. 循环逻辑错位:外层for循环固定执行1001次,不管当前prime_test是不是质数,都会执行prime_test +=1,导致count和prime_test同步递增,根本起不到统计质数数量的作用。

解决方法

把外层的for循环改成while循环,用count的数值控制循环终止条件——只要count没到1000,就持续检查下一个数。这样count只会在找到质数时递增,prime_test则逐个遍历自然数。

修改后的代码:

prime_test = 2  # 从最小的质数开始,跳过1(1不是质数)
count = 0
while count < 1000:
    is_prime = True
    # 优化:只检查到平方根,减少循环次数提升效率
    for divisor in range(2, int(prime_test ** 0.5) + 1):
        if prime_test % divisor == 0:
            is_prime = False
            break
    if is_prime:
        print(prime_test)
        count += 1
    prime_test += 1

额外优化说明

  • 初始值设为2:1不是质数,直接跳过避免无效检查。
  • 内层循环到平方根:如果一个数n存在大于其平方根的因数,对应的另一个因数必然小于平方根,所以检查到平方根就足够,能大幅提升运行效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:48:26