杜教筛

前置芝士:要先会线性筛 还要会线性筛两个积性函数的迪利克雷卷积 https://www.cnblogs.com/zwfymqz/p/9337898.html https://zhuanlan.zhihu.com/p/32303115
感觉这个杜教筛写的不错:https://www.cnblogs.com/peng-ym/p/9446555.html
有一些莫比乌斯反演的题:https://blog.csdn.net/weixin_43973966/article/details/85338976
orz hywn还有神仙的贝尔级数非常有用,理论上可以用来构造一切杜教筛可惜我不会https://www.cnblogs.com/hanyuweining/p/12020842.html
元函数(epsilon(n)=[n=1]) 是迪利克雷卷积的单位元 任意函数与它卷积等于本身
恒等函数(I(n)=1) (F(n)=sum_{d|n}G(d))就有(F=I*G)
单位函数(id(n)=n) (F(n)=sum_{d|n}G(d)frac{n}{d})就有(F=id*G)
(mu * I=epsilon) (varphi * I=id) (mu * id=varphi)
求积性函数(f(n))的前缀和(S(n)=sum_{i=1}^n f(i))
找到(g)(h)满足(h=f*g)且满足(g)(h)可以较快地求出前缀和

[sum_{i=1}^n h(i)=sum_{i=1}^n sum_{d|i} g(d)f(frac{i}{d}) ]

[=sum_{d=1}^ng(d)sum_{i=1}^{lfloor frac{n}{d} floor}f(i) ]

[=sum_{d=1}^ng(d)S(lfloor frac{n}{d} floor) ]

提出右面第一项

[g(1)S(n)=sum_{i=1}^nh(i)-sum_{d=2}^ng(d)S(lfloor frac{n}{d} floor) ]

通常有(g(1)=1)
重点是找到合适的(g)
一:求(mu)前缀和
卷上(I)即可
二:求(varphi)前缀和
还是卷上(I)即可
三:求(f(n)=nvarphi(n))的前缀和
卷上id 发现((id*f)(n)=sum_{d|n}dvarphi(d)frac{n}{d}=nsum_{d|n}varphi(d)=n^2)
四:求(f(n)=sum_{d|n}dmu(d))的前缀和
(g(d)=dmu(d))则有(f=g*I)
(g*id=epsilon) 所以(f*id=I)
五:求(varphi * mu)的前缀和
两次杜教筛 每次卷上(I)
六:求(f(t)=sum_{k|t}k^2mu(k)frac{t}{k})的前缀和
( u(n)=n^2mu(n))(f= u*id)
(id_2(n)=n^2) 发现(id_2* u=epsilon)
((nu*id)*id_2=nu*id_2*id=id)
放一些基础的数学公式 没错我就是这么菜
(sum_{i=l}^r i=(l+r)(r-l+1)/2)
(sum_{i=1}^n i^2=n(n+1)(2n+1)/6)
(sum_{i=1}^n i^3=[n(n+1)/2]^2)
七:求约数个数函数(sigma_0)的前缀和
不需要杜教筛。。
(sum_{k=1}^nsigma_0(k)=sum_{k=1}^nsum_{d|k}1=sum_{d=1}^nlfloor frac{n}{d} floor)
八:求(sum_{i=1}^nmu^2(i))
即求(n)以内的无平方因子数的个数



九:求(sum_{i=1}^nsigma_0(i^2))
https://www.luogu.com.cn/blog/deco/solution-sp20173
十:(f(n)=sum_{ile n}mu(i)lfloor frac{n}{i} floor^k)(sum_{nle N}f(n)) ( Nle 10^9 kle 10^5)

原文地址:https://www.cnblogs.com/misaka10047/p/13290039.html