Python 素数检查功能不适用于负数

Python 素数检查功能不适用于负数,python,primes,Python,Primes,测试人员说,对于x=-7,上述代码不应返回true。 请帮忙。 谢谢:) **编辑:** 我很抱歉,只要在某个地方读到任何小于2的数字(即0、1和所有负数都不是素数),它确实会为我返回True。在调用abs(x)后检查x的值,可能会有所帮助。它确实会为我返回True 您还可以从2到x/2运行循环,并降低复杂性。我的Python不太好,但类似这样的东西应该可以更好地工作: def is_prime(x): x = abs(x) if x == 0 or x == 1:

测试人员说,对于x=-7,上述代码不应返回true。 请帮忙。 谢谢:)

**编辑:**


我很抱歉,只要在某个地方读到任何小于2的数字(即0、1和所有负数都不是素数),它确实会为我返回True。在调用abs(x)后检查x的值,可能会有所帮助。

它确实会为我返回True


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

我的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
def为素数(x):
#处理1、0和负片。
如果x<2:
返回错误
#处理偶数。
elif x%2==0:
返回x==2
#用奇数除数测试。
对于范围内的i(3,sqrt(x),2):
如果x%i==0:
返回错误
返回真值

sqrt(x)
限制可以节省大量的时间,单独处理偶数可以将混合输入的时间减半。

因为for循环的范围是2到x,所以对于-7它不会执行任何操作。请改进素数的逻辑你是什么意思?
是_素数(-7)
是否返回
True
。穆罕默德,您忘记了程序的第二行。请改进您的代码阅读。对于
is_prime(-7)
,它确实返回True。您有什么疑问吗?在传统数学中,如果删除
abs()
如果x<2:return False,则调用并将您的第一个保护设置为
,它将覆盖它。非常抱歉,请在某处阅读任何小于2的数字(即0、1和所有负数都不是素数)
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