我已尝试使用此代码处理此问题:
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))
有谁能告诉我我的代码有什么问题?它只会一直返回“无”。
答案 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))
您可以查看此示例与您自己的代码之间的差异,以了解您出错的位置。