无效的语法;第n个素数

时间:2012-10-13 22:27:23

标签: python-3.x

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创建一个特定长度的素数列表,然后返回列表的最后一个元素。

2 个答案:

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