欧式素数筛法

本文介绍了欧式线性筛法,一种优化的素数筛选算法,旨在解决Eratosthenes筛法中重复标记合数的问题。通过从大到小累积质因子,欧式线性筛法能更有效地找到并记录每个合数的最小质因子,从而实现线性时间复杂度的素数筛选。具体步骤包括依次检查每个数i,如果v[i]=i则i为质数,并将其保存;然后扫描小于等于v[i]的质数p,将v[i*p]更新为p,确保合数i*p的最小质因子正确记录。
摘要由CSDN通过智能技术生成

本文学习自《算法竞赛进阶指南》0x30

回顾Eratosthenes(埃氏)筛法,时间复杂度 O ( N l o g l o g N ) O(NloglogN) O(NloglogN)
  • 每次扫描一个数,把这个数的倍数标记为合数(非素数)。
  • 对于 例如2和3都会把6标记为合数的情况,有:小于 x 2 x^2 x2 x x x的倍数在扫描更小的数时都会已经被标记为合数。因此,对于每个数x,我们只需要从 x 2 x^2 x2开始,把 x 2 , ( x + 1 ) ∗ x , . . . , [ N / x ] ∗ x x^2, (x+1)*x,...,[N/x]*x x2,(x+
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值