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

Rob*_*eph 2 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 
Run Code Online (Sandbox Code Playgroud)

True出于某种原因返回is_prime(9)

Tho*_*zco 6

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

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

相反,你想尝试所有的可能的除数2x-1,然后返回,如果x是他们没有整除.

为此,请重写:

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
    return True
Run Code Online (Sandbox Code Playgroud)