其他分享
首页 > 其他分享> > 【杜教筛小记】

【杜教筛小记】

作者:互联网

虽然挺简单的,但用的不多的话,挺容易忘。

问题模型:

给定一个数论函数\(f\),定义\(S_f(n)=\sum_{i=1}^nf(i)\)
要求在低于线性的时间复杂度求出\(S_f(n)\)

基本原理:

构造一个数论函数\(g\),令\(h=f*g\)
可以得到
\(S_f(n)=\frac{1}{g(1)}(S_h(n)-\sum_{i=2}^ng(i)S_f(\lfloor \frac{n}{i} \rfloor))\)
一般来说\(\frac{1}{g(1)}=1\)
所以有
\(S_f(n)=S_h(n)-\sum_{i=2}^ng(i)S_f(\lfloor \frac{n}{i} \rfloor)\)
观察等式右边,可以用整出分块的技巧,递归计算,那么我们要做的就是快速求出\(S_h(n)\)和\(S_g(n)\)
可以用积分证明复杂度为\(O(n^{3/4})\)

标签:lfloor,frac,sum,rfloor,杜教,ng,复杂度,小记
来源: https://www.cnblogs.com/glq-Blog/p/16545761.html