测试素数的更短方法

gui*_*e D 0 python

要测试一个数字是否为素数,我会这样做:

def isprime(n):

    if n < 2: return False

    for i in range(2, n):
        if n % i == 0:
            return False
    else:
        return True
Run Code Online (Sandbox Code Playgroud)

我想知道如何使编写更高效/更短。

Syn*_*ase 5

带发电机:

def isprime(n):
    return (all(False for i in range(2,n) if n % i == 0) and not n < 2)
    
print (isprime(0))
print (isprime(1))
print (isprime(2))
print (isprime(3))
print (isprime(9))
print (isprime(10))
print (isprime(13))
Run Code Online (Sandbox Code Playgroud)

输出:

False
False
True
True
False
False
True
Run Code Online (Sandbox Code Playgroud)