0

所以我试图找到 10,001 个素数。是的,它是 euler #7 问题。我写的代码似乎给了我从 3 到 10,001 的所有素数,但我的答案仍然不正确。我知道还有其他关于此的问题已经得到解答,但窃取别人的代码并不能帮助我学习。所以我正在寻找我在哪里出错的洞察力。首先,我分离出所有奇数并将它们添加到列表中。我注意到列表中有一些素数的平方,所以我对照从 2 到 10,0001 的每个数字的平方检查列表。那应该只给我留下素数,但我仍然得到错误的答案。任何想法都会很棒谢谢

prime = [i for i in range(2, 10002) if i % 2 != 0]

for i in range(2, 10002):
    if i * i in prime:
        prime.remove(i * i)

print(prime[-1])
4

1 回答 1

2

你试过7*11=77的情况吗?当您应该搜索所有已知素数的倍数时,您只是在寻找完美的正方形。与 Project Euler 的主题保持一致,我不会给你答案,但我可以为你指出Eratosthenes 的筛子

好吧实际上...既然这是一个如此早的问题,我会悬挂一个扰流板。

制作一个素数列表,将其初始化为[2,3,5]. 从 n=8 开始,每次增加 6,通过测试从 2 到数字平方根的每个已知素数的模数来检查 n-1 和 n+1 的素数。

于 2017-11-28T02:38:49.003 回答