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