Python找到第N个素数

时间:2018-09-21 10:24:20

标签: python loops while-loop primes

我试图找到第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)

1 个答案:

答案 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