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 test は、数値が素数であるかどうかをテストし、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

また、float ではなく整数で範囲を指定する必要があります。したがって、この:

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 に答える