应该找出给定的输入是否是素数。
def is_prime(x):
if x <= 1:
return False
elif x == 2 or x == 3:
return True
else:
for n in range(2, x-1):
if x % n == 0:
return False
else:
return True
但是
is_prime(9)
将True
提交给False
。
我找不到错误,需要帮助。
答案 0 :(得分:2)
当您找到不均匀划分True
的因素时,您会返回x
。 2
不会将9
分开,因此您返回True
:
>>> x = 9
>>> n = 2
>>> if x % n == 0:
... print False
... else:
... print True
...
True
当您确定不存在任何因素时,您只需返回True
,因此在之外
for n in range(2, x-1):
if x % n == 0:
return False
return True
您最多不需要测试x - 1
,测试最多int(x ** 0.5) + 1
就足够了(直到平方根):
def is_prime(x):
if x <= 1:
return False
if x in (2, 3):
return True
for n in range(2, int(x ** 0.5) + 1):
if x % n == 0:
return False
return True