def is_prime(x):
x = abs(x)
if x == 0 or x == 1:
return False
elif x == 2:
return True
for i in range(2, x):
if x%i == 0:
return False
return True
测试人员说上面的代码在x = -7时不应该返回true。 请帮忙。 谢谢:))
**编辑:**
我很抱歉,只是读到任何小于2的数字(即0,1和所有负数都不是素数
答案 0 :(得分:1)
它确实为我返回True。在你调用abs(x)之后检查x的值,它可能会有所帮助。
答案 1 :(得分:0)
对于我来说,它确实为负数返回True。
此外,您可以运行从2到x / 2的循环并降低复杂性。
答案 2 :(得分:0)
我的Python不好,但是这样的事情应该更好:
def is_prime(x):
# Handle 1, 0 and negatives.
if x < 2:
return False
# Handle even numbers.
elif x % 2 == 0:
return x == 2
# Test with odd divisors.
for i in range(3, sqrt(x), 2):
if x % i == 0:
return False
return True
sqrt(x)
限制可以节省大量时间,单独处理偶数可以将混合输入的时间缩短一半。