素数检查功能有问题

时间:2011-11-04 00:30:38

标签: python primes

我写了一个函数来计算一个数字是否为素数,但尝试它可能,它似乎无法给出正确的响应。它还会打印正在递增的n值。这是函数的代码(顺便说一下,在Python中):

def isPrime(x):
    for n in range(1, x):
        print n
        if x % n == 0:
            return False
    return True

如果我输入

isPrime(17)

函数返回

1
False

这里出了什么问题?

1 个答案:

答案 0 :(得分:6)

每个数字都可以被1整除。素数是一个自然数,没有正数除数其他而不是1和它本身。因此,如果您使用1启动for循环,每个数字x将在第一次迭代中传递条件x % 1 == 0,并返回False

要修复它,你需要以2而不是1开始循环。另外,作为旁注,你只需要从2循环到sqrt(x),因为如果存在数字{{1除了q > sqrt(x)之外,还必须有一个数字x,它还会将p = x / qx分开。