我试图找到第n个质数,而没有寻找其他解决方案,我正在构建此函数
def Nth_Prime(Target):
Primes = [2,3,5,7,11,13,17,19]
Num = 20
N=8
Count=0
while(N<Target):
for i in Primes:
if Num%i==0:
Num+=1
i=2
else Num%i!=0:
Count+=1
if Count==len(Primes):
i=2
Primes.append(Num)
N+=1
print(Primes)
Num+=1
print(Count)
Nth_Prime(10002)
现在,虽然它可能不是最有效的,但我想了解的是为什么我不能为每个循环将变量I重置为数组的开头?该函数会正确找到下一个素数23,然后出错
帮助表示赞赏。
编辑:我明白了!多亏了所有,有时间清理一下并使其更美观
def Nth_Prime(Target):
Primes = [2,3,5,7,11,13,17,19]
Num = 20
N=8
Count=0
x=0
while(N<Target):
i = Primes[x]
if Num%i==0:
Num+=1
x = 0
elif Num%i!=0:
Count+=1
x+=1
if Count==len(Primes):
Primes.append(Num)
N+=1
Num+=1
Count = 0
x=0
print(Primes[10000])
Nth_Prime(10002)
答案 0 :(得分:3)
无论您对循环i
中的for
变量做什么,都将使用primes
列表中的下一个值重新初始化它。这就是for循环的工作方式。
所以您可以想象for
循环的第一行是
for loop:
i = Primes[x] # initialize
... # do stuff
x+=1
i = 'something' # HAS NO EFFECT for next iteration