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

高效生成无限素数序列遇问题:代码生成等差1序列而非素数

问题分析与修复

你的代码存在两个核心错误,导致无法生成预期的素数序列:

  1. 循环逻辑错误:遍历素数列表时,每处理一个素数就执行prime +=1,导致单个prime值只被一个素数检测,还没完成所有素数因子的校验,prime就已经自增,完全打乱了检测流程。
  2. 素数判定逻辑错误:原代码只要遇到一个不能整除prime的素数,就直接判定它是素数并添加到列表,这不符合素数判定规则——必须是所有小于它的素数都不能整除它,才能判定为素数。

修正后的代码

prime = 5
list_of_prime = [2, 3]

while True:  # 用无限循环持续生成素数
    is_prime = True
    # 遍历已有的素数,逐一检测是否能整除当前prime
    for p in list_of_prime:
        if prime % p == 0:
            is_prime = False
            break  # 只要有一个素数能整除,直接终止检测
    if is_prime:
        print(prime)
        list_of_prime.append(prime)
    prime += 1  # 完成当前prime的所有检测后,再自增进入下一轮

代码逻辑说明

  • 用while True实现无限循环,保证素数序列持续生成。
  • 对每个prime先默认它是素数,再通过遍历素数列表逐一校验。
  • 只要发现有素数能整除当前prime,立即标记为非素数并跳出检测循环,避免无效计算。
  • 只有当所有素数都无法整除prime时,才将其打印并加入素数列表。
  • 等当前prime的所有检测完成后,再执行自增操作,确保每个数都被完整校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:18:00