了解埃拉托色尼筛法

问题描述

我目前正在研究我们在某节课中学到的所有算法,试图了解每个算法的作用和方式。然而,我对我们的 Eratosthenes 筛子中的某一行有点无知:

def sieve(n):
    primes = []                           # list
    is_prime = [False,False]+[True]*(n-1) # how does a list [false,false,true,true....] do anything?
    
    for p in range(2,n+1):                #number from 2 to n
        if is_prime[p]:                   #how does this same list finds out if it is a prime number?
            primes.append(p)              # adds p the list
            for i in range(p**2,n+1,p):   # goes from the square of p to n,in p long steps
                is_prime[i]=False         # those found obviously aren't prime
    
    print(primes)                         # prints the list

这是一个非常简单的算法,它的基本函数适用于我不理解的东西,所以这有点问题。有人请向我解释它的作用,谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)