【发布时间】:2016-08-05 17:58:36
【问题描述】:
我是编程新手,我在互联网上发现了一个显示第 1000 个素数的问题。但问题是我的代码却有一些问题。
count=0
prime=[]
n=2
while count != 1000:
if n == 2 or n == 3 or n == 5 or n == 7 or n == 11:
prime.append(n)
n=n+1
count=count+1
elif n%2 == 0 or n%3 == 0 or n%5 == 0 or n%7 == 0 or n%11 == 0:
n=n+1
else:
prime.append(n)
n=n+1
count=count+1
print(prime[999])
当我有一个像 403 这样的数字时,问题就来了。根据我写的代码,它是质数,但实际上并不是因为它可以被 13 和 31 整除。
我想出了一个解决方案,但我不知道该怎么做以及是否有更好的解决方案。如果您帮助我,请尝试保留我的代码,请不要给我全新的代码。
我的解决方案是:
elif n%prime[:]==0
n=n+1
所以基本上我要做的就是尝试将数字 403 除以我之前记录的任何其他素数。但由于某种原因,这段代码给了我一个错误。我想告诉程序“将 n 划分为列表中的每个数字”。感谢您的帮助:)
【问题讨论】:
-
%prime[:]==0应该做什么?你的意思是for i in prime: if n % i==0? -
是的,但我尝试在不使用“for”命令的情况下这样做