Python 我如何修复设置为检查哪些数字是素数的代码?

Python 我如何修复设置为检查哪些数字是素数的代码?,python,function,for-loop,if-statement,modulo,Python,Function,For Loop,If Statement,Modulo,代码如下: def checkIfPrime (numberToCheck): for x in range(2, numberToCheck): if (numberToCheck%x == 0): return False return True 它几乎可以完美地工作。我看到的问题是,如果我检查零是否是素数,它会说“真”。如下所示: >>> checkIfPrime(0) True 但很明显,零不是质数!当我检查0

代码如下:

def checkIfPrime (numberToCheck):
    for x in range(2, numberToCheck):
        if (numberToCheck%x == 0):
            return False
    return True
它几乎可以完美地工作。我看到的问题是,如果我检查零是否是素数,它会说“真”。如下所示:

>>> checkIfPrime(0)
True
但很明显,零不是质数!当我检查0是否是素数时,我可以对代码做些什么以使其返回“False”


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

def checkIfPrime (numberToCheck):
    for x in range(2, numberToCheck):
        if (numberToCheck%x == 0):
            return False
        if numberToCheck == 0:
            return False
    return True
首先检查它(同时检查非整数和1…):

从数字导入积分
def checkIfPrime(数字检查):
如果不存在(数字检查,整数):
返回错误
如果numberToCheck<2:
返回错误
对于范围内的x(2,数字检查):
如果(numberToCheck%x==0):
返回错误
返回真值
首先检查它(同时检查非整数和1…):

从数字导入积分
def checkIfPrime(数字检查):
如果不存在(数字检查,整数):
返回错误
如果numberToCheck<2:
返回错误
对于范围内的x(2,数字检查):
如果(numberToCheck%x==0):
返回错误
返回真值

OK。我试着做你做的事情,但是我把if numberToCheck==0缩进并放在范围内的for x下面。。。。线路。为什么将numberToCheck==0放在范围内的for x下不起作用。。。行?但是如果numberToCheck==0,您没有
:请先检查。如果没有,那么
range(2,numberToCheck)
将是一个空范围,因此您将返回True。注意:
1不是检查0和1以及非整数的素数
更新答案。检查
numberToCheck
没有意义。仅检查其平方根(包括)就足够了,而且效率更高。好的。我试着做你做的事情,但是我把if numberToCheck==0缩进并放在范围内的for x下面。。。。线路。为什么将numberToCheck==0放在范围内的for x下不起作用。。。行?但是如果numberToCheck==0,您没有
:请先检查。如果没有,那么
range(2,numberToCheck)
将是一个空范围,因此您将返回True。注意:
1不是检查0和1以及非整数的素数
更新答案。检查
numberToCheck
没有意义。只检查其平方根(包括在内)就足够了,而且效率更高。检查您从呼叫范围(2,0)获得的信息检查您从呼叫范围(2,0)获得的信息
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