如何修改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
相关产品推荐
相关产品推荐

