0
点赞
收藏
分享

微信扫一扫

Python实现素数筛选(欧式筛法)

言诗把酒 2023-02-23 阅读 140

素数筛选之欧式筛法:用合数与素数乘法,素数与素数的乘法去筛将来的数,同时当这个数被更小的素数整除,就不必再用这个数去运算,保证每个合数只会被它的最小质因数筛去,因此每个数只会被筛一次。 Python实现欧式筛法的代码如下所示

# 选出1-n的所有素数
def o_filter(n):
    flag = [1] * (n + 1)
    prime = []
    len = 0
    flag[0], flag[1] = 0, 0
    for i in range(2,n+1):
        if flag[i] == 1:
            prime.append(i)
            len += 1
        for j in range(0, n + 1):
            if i*prime[j] <= n:
                flag[i*prime[j]] = 0
                if i % prime[j] == 0:
                    break
            else:
                break
    return prime
if __name__ == "__main__":        
    print(o_filter(100))            
举报

相关推荐

0 条评论