我的is_prime函数在9上失败了,我不知道为什么?

时间:2015-06-16 16:38:35

标签: python function

我有点问题。我正在编写一个is_prime函数,但无论何时运行它,它都会在is_prime(9)上失败,我看不出原因:

def is_prime(x):
    if x < 2: ##because negative numbers, 0 and 1 are not prime##
            return False
    elif x == 2:
            return True
    else:
        for n in range(2, x):
            if x % n == 0:
                return False
            else:
                return True 

由于某种原因True

返回is_prime(9)

1 个答案:

答案 0 :(得分:6)

这是因为该函数在返回之前不检查所有符合条件的除数。

相反,如果True不能被2整除,它就会提前x退出,这不是你想要的奇数(例如9不能被{{1}整除,但它不是素数。)

相反,您想尝试从22所有可能的除数,然后如果x-1可以被它们全部整除则返回。

为此,请重写:

x