1
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 测试是测试一个数字是否为素数,nthprime 创建一个具有一定长度的素数列表,然后返回列表的最后一个元素。

4

2 回答 2

1

print是 Python 3 中的函数,而不是语句。您应该将最后一行代码更改为:

print(nthprime(10001))
于 2012-10-13T22:38:19.287 回答
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"
于 2012-10-13T22:38:56.280 回答