明确排除时以零误差为模

Modulo by zero error when specifically excluded

我写了一个素数检查程序,检查余数直到一个数的平方根。我专门用 1 和 0 删除了模,程序仍然 returns 上述错误。这是程序:

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 in range(1)0

因此第四行的 if 语句 returns False 但它仍然是 returns 错误。

三个问题:

  1. 专门处理n小于2的情况

  2. 您需要将 i 打折为 01

  3. 您需要 包括 数字的四舍五入平方根(否则您会错误地将素数平方数 - 例如 49 - 报告为素数)。

(2)和(3)写成

就解决了

for i in range(2, 1 + math.floor(math.sqrt(n))):

并删除错误的检查 if (n != 1) and (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

n % i中,不是n不能为零,是i

检查n != 0在这种情况下没有用,您需要检查i != 0