如何修复此代码设置以检查哪些数字是素数?

时间:2017-04-11 15:53:45

标签: python function for-loop if-statement modulo

以下是代码:

def checkIfPrime (numberToCheck):
    for x in range(2, numberToCheck):
        if (numberToCheck%x == 0):
            return False
    return True

它几乎完美无缺。我看到的问题是,如果我检查零是否为素数,则表示" True。"像这样:

>>> checkIfPrime(0)
True

但显然,零不是素数!我能对代码做些什么,以便返回" False"当我检查0是否是素数时?

编辑:我现在用原始代码看到了问题。但是有人让我更新我的问题,以显示我是如何尝试并且失败的,检查我的参数checkIfPrime以使程序返回' False'当我检查数字零是否为素数时。所以这是尝试:

def checkIfPrime (numberToCheck):
    for x in range(2, numberToCheck):
        if (numberToCheck%x == 0):
            return False
        if numberToCheck == 0:
            return False
    return True

1 个答案:

答案 0 :(得分:2)

首先检查它(并检查非整数和1同时......):

from numbers import Integral
def checkIfPrime (numberToCheck):
    if not isinstance(numberToCheck, Integral):
        return False
    if numberToCheck < 2:
        return False
    for x in range(2, numberToCheck):
        if (numberToCheck%x == 0):
            return False
    return True