Python质量检查器有25个错误吗?

时间:2014-06-23 22:39:21

标签: python

所以我对Python比较陌生并试图定义一个函数来检查数字是否为素数。代码如下:

def prime(x):
    if x < 2:
        return False
    elif x == 2:
        return True
    else:
        for i in range(3, int((x**0.5)+1)):
            if x % i == 0:
                return False
            else:
                return True

这似乎适用于大多数值,但它在25等特定值上失败,任何人都可以帮忙向我解释原因吗?谢谢!

2 个答案:

答案 0 :(得分:2)

到达后,

return会离开您的功能。让我们看一下25的情况。

  • x<2没有,所以继续。
  • x==2没有,所以继续。
  • x可以i(=3)整除吗?不,所以转到else子句,return True离开函数。

查看问题?

换句话说,对于足够大 x,您的功能相当于:

def prime_prime(x):
    if x < 2:
        return False
    elif x == 2:
        return True
    else:
        if x % 3 == 0:
            return False
        else:
            return True

答案 1 :(得分:0)

else:

子句,它检查的第一个i将使其返回true。

相反,写一下

else:
    for i in range(3, int((x**0.5)+1)):
        if x % i == 0:
            return False
    return True

编辑: 正如@mata指出的那样,你实际上需要从2开始,所以它应该是for i in range(2, int((x**0.5)+1)):