def isprime(x):
for a in range(2,(x//2)+1):
if((x<=0) or (x%a==0)):
return(False)
return(True)
这并不适用于负值工作。例如:isprime(-3)
返回True
,但它必须返回False
。请帮忙。我已经写在python下面的代码(不适用于-ve值工作):
def isprime(x):
for a in range(2,(x//2)+1):
if((x<=0) or (x%a==0)):
return(False)
return(True)
这并不适用于负值工作。例如:isprime(-3)
返回True
,但它必须返回False
。请帮忙。我已经写在python下面的代码(不适用于-ve值工作):
通过它的小学定义,素数为正数只定义了,因此你的函数应返回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是质数iff 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
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
问题是你正在检查数字是否为负循环内。例如,如果x = -3,那么你正在尝试在范围(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)
有人请帮忙 –
当我试图通过传递负值来调用函数时,它总是返回true。 –
首先,检查x <= 0时条件应该失败,并且必须返回false。但该函数返回true。 –