线性筛相关

素数筛法

Eratosthenes 筛法

大致上就是从 2 开始往后扫,找到一个未被筛的(素)数以后将它在n以内的倍数全部筛去。
时间复杂度 O(nloglogn) ,空间复杂度 O(n)

Euler 筛法

这个算法的精妙之处在于每一个合数只会被它最小的素因子筛去,它对枚举的每一个数都尝试乘上一个质数,将构出的合数筛去。
考虑合数 n=pm=pm ,其中 p 是它最小的素因子,p也是一个素因子但是 p>p 。那么枚举到 m n一定会被筛去,因为 m 不存在比p更小的质因子。然而枚举到 m n 不会被筛去,因为m一定存在 p 这个质因子,枚举乘上的素数到p的时候就结束了。
综上, Euler 筛法的时间、空间复杂度都是 O(n)

Möbius函数的线性筛法

由于 μ 函数是一个积性函数,而且它的性质比较特殊,我们只需要在欧拉筛的过程中讨论一下就可以了。

实际上只要能快速算出 f(pk) ,配合素数线筛就可以线性或者带个 log 地筛出积性函数的值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值