我有点问题.我正在编写一个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)?
这是因为该函数在返回之前不会检查所有符合条件的除数.
相反,它会提前退出,True如果x不能被2整除,这不是你想要的奇数(例如,它9不能被整除2,但它不是素数).
相反,你想尝试所有的可能的除数2来x-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)