【发布时间】:2014-08-28 18:11:38
【问题描述】:
我的代码有问题。问题是:
“通过列出前六个素数:2、3、5、7、11和13,我们可以看出第6个素数是13。第10001个素数是多少?”
这就是它的样子:
div = 10001
i = 2
count = 0
prime = 0
now = []
while count < div:
for x in range (2,i+1):
if len(now) ==2:
break
elif i%x == 0:
now.append(x)
if len(now)==1:
prime = i
count += 1
now = []
i+=1
print(prime)
我尝试了 div 到 1000 并且它似乎工作正常(对于 div 1000 我收到 7919)。但是,当我尝试 div = 10001 时,我什么也得不到,甚至没有错误。如果有人能帮助我,我将不胜感激。 谢谢你。
【问题讨论】:
-
它可能运行正常,只是速度很慢。提示:有更有效的方法来计算素数。
-
你等了多久?此代码将需要 很长 时间才能完成执行。
-
@Kevin 是的,它正在运行,我刚刚检查过它是否有效。有什么办法让它更快?
-
Sieve of Eratosthenes 对于接下来 50 多个涉及素数的欧拉计划问题应该足够快。 (对于任何说“告诉他这会破坏学习经验”的人:发现晦涩的数学理论的存在与学习如何编码无关。)
-
筛子是一种方法,同样值得注意的是,要检查一个数字是否为素数,您还只需检查它是否可以被数字整除