为什么我的Eratosthenes筛子会去掉非质数?

2024-04-25 08:56:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码:

def sieve(list1):

    not_prime = set()
    primes = []
    for i in range(2, list1+1):
        if i in not_prime:
            continue
        for x in range(i*2, list1+1, i):
            not_prime.add(x)
        primes.append(i)
    return primes

我正在尝试保留非素数numebrs并将其更改为0。我哪里出错了?输出甚至不显示除素数以外的任何其他数字。你知道吗


Tags: 代码inaddforifdefnotrange
1条回答
网友
1楼 · 发布于 2024-04-25 08:56:19

在这种情况下,你就不能在no\u prime子句中附加0而不是continue吗?你知道吗

def sieve(list1):
    not_prime = set()
    primes = []
    for i in range(2, list1+1):
        if i in not_prime:
            primes.append(0);
            continue;
        for x in range(i*2, list1+1, i):
            not_prime.add(x)
        primes.append(i)
    return primes



sieve(27)

# output [2, 3, 0, 5, 0, 7, 0, 0, 0, 11, 0, 13, 0, 0, 0, 17, 0, 19, 0, 0, 0, 23, 0, 0, 0, 0]

或者,如果这是一个玩具以外的东西,你可能想看看稀疏数组。你知道吗

相关问题 更多 >