找到第1000个素数(python)

时间:2017-07-18 01:52:27

标签: python

我已尝试使用此代码处理此问题:

def nthprime(n):

    cnt=1
    count=0
    while(cnt==n):
        for i in range(3, ):
            for j in range(2, i):
                if i % j != 0:
                    count = count + 1
            if count == (i - 2):
                    cnt = cnt + 1
            return I

print(nthprime(1000))

有谁能告诉我我的代码有什么问题?它只会一直返回“无”。

2 个答案:

答案 0 :(得分:2)

如果将代码拆分为两个函数

,您的代码将更容易理解
ida:Audience

当我运行它时,我得到(在python2中,添加def is_prime(i): if i == 2: return True # 2 is a prime number for j in range(2,i): # you could stop sooner (optimize) if i % j == 0: return False return True def nthprime(n): i = 1 count = 0 while count < n: i += 1 if is_prime(i): count += 1 return i for n in (1,2,3,4,5,6,7,8,9,10,100,1000): print( n, nthprime(n) )

from __future__ import print_function

答案 1 :(得分:0)

你的代码有一些问题,因为arif指出我没有初始化,while循环永远不会运行,因为cnt == n不会有效等等。而不是完善你的代码我有一点点修改如何做你想做的事情的例子:

def nth_prime_number(n):
    prime_list = [2]
    num = 3
    while len(prime_list) < n:
        for p in prime_list:
            if num % p == 0:
                break
        else:
            prime_list.append(num)
        num += 2
    return prime_list[-1]

print(nth_prime_number(1000))

您可以查看此示例与您自己的代码之间的差异,以了解您出错的位置。