def primetest(x):
if x < 2:
return False
if x == 2:
return True
if x % 2 == 0:
return False
for i in range(3,(x**0.5)+1):
if x % i == 0:
return False
return True
def nthprime(n):
primes = []
x = 2
while len(primes) < n:
if primetest(x) == True:
primes.append(x)
x = x + 1
return list(-1)
print nthprime(10001)
每当我尝试运行它时,它会说“print nthprime(10001)”是无效的语法。
-prime test是测试一个数字是素数,nthprime创建一个特定长度的素数列表,然后返回列表的最后一个元素。
答案 0 :(得分:1)
print
是Python 3中的一个函数,而不是一个语句。您应该将最后一行代码更改为:
print(nthprime(10001))
答案 1 :(得分:0)
在您的代码中:
def nthprime(n):
primes = []
x = 2
while len(primes) < n:
if primetest(x) == True:
primes.append(x)
x = x + 1
return list(-1) // this is the error
我认为你的意思是素数[-1],就像这样:
def nthprime(n):
primes = []
x = 2
while len(primes) < n:
if primetest(x) == True:
primes.append(x)
x = x + 1
return primes[-1] // this is now correct
您还需要以整数指定范围,而不是浮点数。所以这个:
for i in range(3,(x**0.5)+1):
成为这个:
for i in range(3,int((x**0.5)+1)): // note the "int"