素数检查函数不适用于负数

2024-04-24 19:08:01 发布

您现在位置:Python中文网/ 问答频道 /正文

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和所有负数不是素数)


Tags: or代码infalsetrueforreturnif
3条回答

对我来说,负数是真的。你知道吗

您还可以运行从2到x/2的循环,并降低复杂性。你知道吗

对我来说确实如此。在你调用abs(x)之后检查x的值,也许会有帮助。你知道吗

我的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)限制节省了大量时间,单独处理偶数可以将混合输入的时间减半。你知道吗

相关问题 更多 >