特别排除

时间:2017-02-07 14:28:17

标签: 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。

primeCheck(2)

x = 1

i in range(1)0

因此第4行中的if语句返回False,但仍然会返回错误。

3 个答案:

答案 0 :(得分:3)

三个问题:

  1. 特别处理n小于2的情况。

  2. 您需要对i0 1进行打折。

  3. 您需要包含该数字的向下舍入的平方根(否则您将错误地报告素数 - 例如49 - 作为素数)。

    < / LI>

    (2)和(3)通过写

    来解决

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

    并放弃错误检查if (n != 1) and (n != 0):

答案 1 :(得分:1)

n % i中,n不是i,不能为零,而是n != 0

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

答案 2 :(得分:0)

试试这个:

[0, 1, 2]