95如何成为此代码行中的素数?

时间:2019-07-08 21:34:02

标签: python function while-loop

我已经完成了寻找素数的作业,直到找到给定的数为止,然后我将该代码写出作为答案

def count_primes(num):
    primes = [2]
    x = 3
    if num < 2:
        return 0
    while x <= num:
        for y in range(3,x,2):
            if x%y == 0:
                x += 2
        else:
            primes.append(x)
            x += 2
    print(primes)

但是问题是,当我将num写为100时,我得到了以下信息:

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 95, 97, 101]

正如我在输出中看到的101一样,我在“第9行”之后添加了break命令行,这也使我摆脱了95的输出,即:

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

那么break行在此代码中如何将95阻止为素数?

1 个答案:

答案 0 :(得分:1)

发生这种情况是因为您从未重置y值。 因此,由于93可被31整除,因此将o x的值增加2。

下一个比较是95%33,它永远不会回到5。

def count_primes(num):
    primes = [2]
    x = 3
    if num < 2:
        return 0
    while x <= num:
        for y in range(3, x, 2):
            if x % y == 0:
                x += 2
                break
        else:
            primes.append(x)
            x += 2
    print(primes)