Python 明确排除时的零模误差
我写了一个素数检查程序,它检查余数直到一个数的平方根。我特别删除了1和0的模,程序仍然返回前面提到的错误。节目如下:Python 明确排除时的零模误差,python,modulo,Python,Modulo,我写了一个素数检查程序,它检查余数直到一个数的平方根。我特别删除了1和0的模,程序仍然返回前面提到的错误。节目如下: def primeCheck(n): x = math.floor(math.sqrt(n)) for i in range(x): if (n != 1) and (n != 0): if n%i == 0: return False return True 它适用于除2以外的所有
def primeCheck(n):
x = math.floor(math.sqrt(n))
for i in range(x):
if (n != 1) and (n != 0):
if n%i == 0:
return False
return True
它适用于除2以外的所有整数
primeCheck(2)
x=1
i位于范围(1)
→ <代码>0
因此,第四行中的if
语句返回False
,但仍然返回错误。三个问题:
n
小于2的情况i
贴现为0
和1
对于范围内的i(2,1+数学地板(数学sqrt(n)):
如果(n!=1)和(n!=0):请尝试以下操作:
def primeCheck(n):
x = math.floor(math.sqrt(n))
if (n <= 1):
return False
for i in range(2,x+1):
if n%i == 0:
return False
return True
def primeCheck(n):
x=数学地板(数学sqrt(n))
如果(n在n%i
中,它不是n
不能为零,而是i
检查n!=0
是没有用的。在这种情况下,您需要检查i!=0
,因为如果(n!=1)和(n!=0):
没有使用i
,它正在使用n
。调试您的代码,您会更好地理解它。这会错误地将0和1报告为素数。而如果(n!=1)和(n!=0):
在这里没有什么作用。这就是为什么我写它将适用于n>=2。你是对的,我们可以删除if语句,因为它永远不会出现。或者我们可以将它更改为handel 0和1。天哪,我很笨。我不知道为什么我选中了n…谢谢