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

Python实现埃氏筛法输出质数到文本文件显示None问题求助

问题原因及修复方案
  • 核心问题1:print() 函数的返回值固定为 None,你将 print(pr1) 赋值给 output 变量,最终写入文件的自然只有 None。同时你在循环中反复覆盖 output 的值,就算赋值逻辑正确也只会写入最后一个素数。
  • 核心问题2:埃氏筛的逻辑实现混乱,标记非素数的逻辑、pr1 的自增位置、遍历输出素数的循环位置都存在错误,筛法本身无法正确生成素数列表。
  • 核心问题3:函数名拼写错误,定义时为 SieveOfEratosthenes,调用时写为 SieveOfErastothenes,程序运行会直接抛出名称错误。

修复后可运行代码

def SieveOfEratosthenes():
    n = int(input("Enter a Number: "))
    file = open("primes.txt", "w")
    prime = [True for i in range(n+1)]
    # 修正埃氏筛实现逻辑
    pr1 = 2
    while pr1 * pr1 <= n:
        if prime[pr1]:
            for i in range(pr1 * pr1, n+1, pr1):
                prime[i] = False
        pr1 += 1
    # 收集所有素数统一写入
    output_list = []
    for pr in range(2, n+1):
        if prime[pr]:
            output_list.append(str(pr))
    # 素数间用换行分隔,可按需调整分隔符
    file.write('\n'.join(output_list))
    file.close()
    
if __name__ == '__main__':
    SieveOfEratosthenes()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:45:03