我正在尝试找出第n个质数,不查看其他解决方案,我正在构建这个函数。
现在,虽然这可能不是最有效的方法,但我想要理解的是为什么我不能在每个循环中将变量I重置为数组的开头?该函数正确地找到23作为下一个质数,然后出现错误。
希望得到帮助。
编辑:我明白了!感谢所有人,现在需要稍微整理一下并使其更加美观。
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
将是列表中的下一个值,无论之前你对它做了什么,最好使用 while 循环和索引来实现。 - Netwavefor
循环的工作方式。你可以在循环内部对i
进行任何操作,但当回到循环顶部时,它将被设置为range
(或其他你正在迭代的对象)的下一个值。 - PM 2Ringelse Num%i!=0:
是无效的语法。你不能给else
加条件。如果需要这样做,请使用elif
。但是,在那里没有必要加条件。如果Num%i==0
的条件为假,则Num%i!=0
必定为真,反之亦然。 - PM 2Ring