【问题标题】:what is the highest prime number between 1 and 100011到10001之间最大的质数是多少
【发布时间】:2018-05-11 09:41:02
【问题描述】:

所以我试图找到 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])

【问题讨论】:

  • 15 不是平方数。
  • 您是在寻找第 10001 个素数,还是小于 10001 的最大素数?它们是不同的问题。
  • 我试图找到第 10001 个素数。
  • 你在生成‘prime’后看过了吗?因为它不是,你认为它是什么。另外:第五个素数>5。
  • @Piinthesky - 哇,刚刚点击了。所以你告诉我,因为我的范围设置为 10002,所以列表的高度不足以达到第 10001 个素数,对吗?

标签: python python-3.x primes primality-test


【解决方案1】:

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

其实……既然是这么早的问题,我就来个剧透吧。

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

【讨论】:

  • 我从未想到过这样的数字。谢谢你的提示和链接
猜你喜欢
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
  • 1970-01-01
  • 1970-01-01
  • 2015-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多