min_25筛学习

min_25筛是用于处理可以快速算出某个质数的值的积性函数的前缀和问题的一种筛。
首先定义这样一个东西:
g
这个东西表示1~n中所有最小质因子大于第j个质数或自己就是质数的数,把它们全部当成质数算出来的前缀和是多少。转移如图所示(搬自大巨佬YYB的博客)
转移相当于减去所有最小质因子是这个数的数的值,然后补上所有不慎被删的质数的值(所有小于pj-1的质数的最小质因子肯定小于pj)。
然后定义h(n,j)表示1-n中所有最小质因子大于等于Pj的数i的f(i)的和,注意此处的f是真实值,而上面算g的时候实际上是全部当成质数算,是构造的值。
在这里插入图片描述
前面两项就是质数的贡献,后面则分别是质数的若干次方的答案,以及以当前考虑的质数为最小质因子的所有f(i)的贡献。
最后S(n,0)即为答案。
注意式子中S([npke],k+1)S([\frac {n}{p_k^e}],k+1)S([pken],k+1)处,因为我们枚举的是最小质因子,所以并不能是S([npke],j+1)S([\frac {n}{p_k^e}],j+1)S([pken],j+1),否则会完蛋
还有一个性质,就是我们发现[npke][\frac {n}{p_k^e}][pken]这个东西只有n\sqrt{n}n的取值,所以可以优化。
为啥呢?
一个显然的性质是[[na]b]=[na∗b][\frac{[\frac{n}{a}]}{b}]=[\frac{n}{a*b}][b[an]]=[abn],这个东西考虑用原数=k∗a∗b原数=k*a*b=kab的表示即可。
所以后面那个东西总共只会有根号的取值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值