关于“xrange”函数 - (Python3 中的“range”)当我在循环内进行否定检查时会发生什么?在这种情况下,负数可以被视为边缘情况,但始终返回 None。有什么见解吗?
问题是您正在检查 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)
根据小学的定义,prime数字仅定义为正数,因此您的函数应该为每个负数返回
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
话虽如此,可以扩展定义(如数学某些领域中所做的那样),以包含负数(进一步讨论请参阅here和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