如何处理Python中质数检查的负值情况?

问题描述 投票:-4回答:2

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

python-3.x if-statement primes
2个回答
0
投票

问题是你在 for 循环中检查数字是否为负数。例如,如果x=-3,那么你试图在range(2,-1)中运行for循环,而这个循环是None。所以for循环永远不会运行,因此返回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)

0
投票

按照它的小学定义。首要的 数字只定义为正数,因此你的函数应该返回 False 例如,每一个负数都是这样。

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

这就是说,我们可以把这个定义扩大(就像在数学的某些领域所做的那样),把负数也包括在内(更多的讨论请见 此处此处). 在这种情况下,对于每一个负数 -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
© www.soinside.com 2019 - 2024. All rights reserved.