0

检查输入是否为素数的函数。我知道这里已经介绍过很多次了,但是我的代码出于某种原因给了我 True for x=32 我不知道为什么

def is_prime(x):
    if x < 2:
        return False
    elif x == 2:
        return True
    else: 
        for i in range(3,x): #Ignore sqrt(x) improvement
            if x%i == 0:
                return False
            else :
                return True
4

1 回答 1

1

for i in range(3,x):

这首先与数字 3 一起使用。因为32 % 3 != 0,它返回True。然后函数中断,因为它返回了一个值。

考虑return True在 for 循环之后放置:

for i in range(3,x): #Ignore sqrt(x) improvement
    if x % i == 0:
        return False
return True

现在,如果一个数是可整除的,它将立即中断并返回False。但是如果没有数字进入 32,则 for 循环将完成,并返回True

此外,如果您使用的是 python 2.x,使用它会更快xrange(),因为它会返回一个生成器:)。

于 2013-06-09T02:37:45.890 回答