【发布时间】:2019-06-18 23:29:07
【问题描述】:
通过列出前六个素数:2、3、5、7、11 和 13,我们可以看到第 6 个素数是 13。
第 10001 个素数是多少?
k = 10001
b = 2
for i in range(2, 100000):
if i % 2 != 0 and i % 3 != 0:
b += 1
if b == k:
print(i)
我预计输出是 104743,但实际输出是 29999。为什么?
如果 k 为 6,我得到 13 的输出,这是正确的。但如果 k 为 10001,我得到 29999,这是错误的。
【问题讨论】:
-
也许是因为合数可以有 2 和 3 以外的因数?
-
测试驱动开发简而言之:P
-
出于调试考虑,最小的失败案例是
k=10,它应该是 29 但你说的是 25(这不是质数)。您同样将 35、49 和 55 视为质数,即使它们是 5*7、7*7 和 5*11。省去一些麻烦,写一个isPrime(n)函数,你可以在各种素数和非素数上独立测试,这样你就不必同时调试一万次迭代。 -
你必须使用埃拉托色尼筛或类似物
标签: python