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

Python固定范围质数列表生成异常求助:代码逻辑合理却输出错误

问题排查与修正

核心问题1:遍历范围错误

原代码用range(2,100,2)只遍历所有偶数,除了2本身,其他偶数都是合数,这直接导致:

  • 所有奇数质数(3、5、7、11等)完全被漏掉
  • 像4、6、8这类合数会被错误输出

核心问题2:因子检查逻辑漏洞

  • k初始值设为1,第一次循环直接跳到3,完全跳过了对2的检查。对于偶数来说,它们的最小质因子就是2,但代码根本没做这个判断,导致4这类能被2整除的合数被误判为质数。
  • 循环条件k*k < number有问题,比如number=9时,k=3的平方等于9,不满足k*k < number,循环直接结束,会错误判定9是质数,正确条件应该是k*k <= number。

修正后的代码

# 先输出唯一的偶质数2
print(2)
# 只遍历奇数,提升效率
for number in range(3, 100, 2):
    k = 3
    # 循环条件改为k*k <= number,覆盖所有可能的因子
    while k * k <= number:
        if number % k == 0:
            # 能被整除,不是质数,跳出循环
            break
        k += 2
    else:
        # 循环正常结束,说明没有找到因子,是质数
        print(number)

代码说明

  1. 单独处理2:因为它是唯一的偶质数,之后只遍历奇数,减少一半的循环次数
  2. k从3开始,每次加2:奇数的因子不可能是偶数,所以只检查奇数因子,提升效率
  3. 循环条件k*k <= number:确保检查到所有可能的质因子(如果n有大于√n的因子,那对应的另一个因子必然小于√n)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:20:27