我是编程的新手,我在互联网上发现了一个显示第1000个素数的问题。但问题是我的代码,但我有一些问题。
.gitignore
问题来自于我有一个像403这样的数字。根据我写的代码是素数,但实际上并不是因为它可以除以13和31。
我提出了一个解决方案,但我不知道该怎么做以及是否有更好的解决方案。如果您帮助我,请尝试保留我的代码,请不要给我全新的代码。
我的解决方案是:
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分成例如我之前记录的任何其他素数。但由于某种原因,这段代码给了我一个错误。我想告诉程序"将n除以列表中的每个数字"。谢谢你的帮助:)
答案 0 :(得分:0)
您可以使用“任何”。
In [15]: prime = [2, 3, 5, 7, 11]
In [16]: n = 15
In [17]: any(n%p == 0 for p in prime)
Out[17]: True
In [18]: n = 17
In [19]: any(n%p == 0 for p in prime)
Out[19]: False
In [20]: n = 19
In [21]: any(n%p == 0 for p in prime)
Out[21]: False
基本上,它会告诉你给定的数字是否可以被列表中“任意”的数字整除。
答案 1 :(得分:0)
有几种计算素数的算法,首先需要的是如何判断函数isPrime(n)是返回true还是false,如果需要,这个函数isPrime(n)应该在o(n)之下)。有几种方法可以做到这一点,以下是可能性:
@Html.TextBoxFor(model => model.EndTime, new { type = "date" })
这个会给你素数或者没有复杂度o(n ^ 1/2),对你来说应该足够了,之后你需要做的下一件事就是:
def isPrime(n):
i = 2;
while i*i < n:
if n % i == 0:
return false
i = i + 1
return true;
我还没有尝试过这段代码,但概念应该在那里