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

如何修改Python质数程序以输出单个质数列表而非多次输出?

解决方法

你的问题核心是print(ans)被放在了循环内部,每次找到质数添加到列表后就会触发打印,导致多次输出。只需把打印语句移到循环结束后,同时优化循环逻辑避免无限循环即可。

修改后的代码:

limit = 34
num = [value for value in range(2, limit + 1)]
factor = 2
ans = []
while factor <= limit:  # 替换while True,避免因子超过上限后无限循环
    if factor not in num:
        factor += 1
    else:
        ans.append(factor)
        # 原代码直接遍历删除元素会漏删,改用列表推导式生成新列表更可靠
        num = [ele for ele in num if ele % factor != 0]
        factor += 1
print(ans)

关键修改点:

  • 将print(ans)移至循环外部,仅在所有质数筛选完成后打印最终结果。
  • 把while True改为while factor <= limit,明确循环终止条件,防止无限循环。
  • 替换原有的遍历删除逻辑为列表推导式,避免因遍历过程中列表长度变化导致的元素漏删问题。

运行修改后的代码,会输出你期望的结果:

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:15:19