【发布时间】:2014-01-27 00:14:11
【问题描述】:
我用python写了一个代码来查找第n个素数。
print("Finds the nth prime number")
def prime(n):
primes = 1
num = 2
while primes <= n:
mod = 1
while mod < (num - 1):
ptrue = 'true'
if num%(num-mod) == 0:
ptrue = 'false'
break
mod += 1
if ptrue == 'true':
primes += 1
return(num)
nth = int(input("Enter the value of n: "))
print(prime(nth)
代码对我来说看起来不错,但运行时它返回错误:
Traceback (most recent call last):
File "C:/Users/AV/Documents/Python/nth Prime.py", line 17, in <module>
print(prime(nth))
File "C:/Users/AV/Documents/Python/nth Prime.py", line 13, in prime
if ptrue == 'true':
UnboundLocalError: local variable 'ptrue' referenced before assignment
在我看来,它似乎是在试图说我在最后一行中指的是 ptrue,即使我不是。这里有什么问题...有人可以帮忙吗?
【问题讨论】:
-
您只需将
ptrue="true"添加到您的while循环顶部 -
谢谢,这确实解决了问题,但我的代码似乎没有工作......它只是为每个 n 值打印出 2......这是怎么回事?跨度>
-
你从未改变过 num 的初始值
2。 -
我刚刚意识到,在输入 num += 1 后,它会比素数更新 1...谢谢大家的支持。