Python找到第N个素数
Python find Nth prime
我试图找到第 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)
无论您在循环中对 i
变量做什么,for
都将使用 primes
列表中的下一个值重新初始化它。这就是 for 循环的工作原理。
所以你可以想象 for
循环的第一行是
for loop:
i = Primes[x] # initialize
... # do stuff
x+=1
i = 'something' # HAS NO EFFECT for next iteration
我试图找到第 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)
无论您在循环中对 i
变量做什么,for
都将使用 primes
列表中的下一个值重新初始化它。这就是 for 循环的工作原理。
所以你可以想象 for
循环的第一行是
for loop:
i = Primes[x] # initialize
... # do stuff
x+=1
i = 'something' # HAS NO EFFECT for next iteration