Python 明确排除时的零模误差

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以外的所有

我写了一个素数检查程序,它检查余数直到一个数的平方根。我特别删除了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位于范围(1)
→ <代码>0

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

三个问题:

  • 具体处理
    n
    小于2的情况

  • 您需要将
    i
    贴现为
    0
    1

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

  • (2) (3)通过书面形式解决

    对于范围内的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…谢谢