Python,素数检查器

Tom*_*Alm 0 python primes numbers

嗨,我正在制作一个功能,检查一个数字是否是素数,但它告诉我9是素数.

def eprimo(num):
    if num < 2:
        return False
    if num == 2:
        return True
    else:
        for div in range(2,num):
            if num % div == 0:
                return False
            else:
                return True
Run Code Online (Sandbox Code Playgroud)

Tam*_*más 6

你的for循环在第一次迭代后立即退出,当它检查你的数字是否可被2整除时.如果你的数字是偶数,它将返回False; 否则,它将返回True.

解决方案不是True立即返回; 等待循环中所有迭代的结束:

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

或者,使用all()构造:

return all(num % div != 0 for div in range(2, num))
Run Code Online (Sandbox Code Playgroud)