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)
你的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)