如何处理 Python 中素数检查的负面情况?

How to handle negative cases for prime check in Python?

关于 "xrange" 函数 - ("range" in Python3)当我在循环内进行否定检查时会发生什么?在这种情况下,负数可以被视为边缘情况,但总是 returns None。有什么见解吗?

问题是您正在检查 for 循环内的数字是否为负数。例如,如果 x=-3,那么您正在尝试 运行 范围 (2,-1) 中的 for 循环,即 None。所以 for 循环永远不会 运行s,因此 returns True.

def isprime(x):
 if x<=0:
   return(False)
 for a in range(2,(x//2)+1):
   if(x%a==0):
     return(False)
 return(True)

根据小学的定义,prime numbers are defined for only for positive numbers, thus your function should return False for every negative number, for示例:

def isprime(x):
    if x <= 0:
        return False
    for a in range(2, (x//2)+1):
        if x % a == 0:
            return False
    return True

也就是说,可以扩展定义(如在某些数学领域所做的那样),以包括负数(有关进一步讨论,请参见 here and here)。在这种情况下,对于每个负数 -n-n 是质数当且仅当 n 是质数。因此,您的代码可能类似于:

def isprime(x):
    if x <= 0:   # or use any |abs| method you'd like, like numpy's
        x = -x
    for a in range(2, (x//2)+1):
        if x % a == 0:
            return False
    return True