杜教筛

前置芝士:要先会线性筛 还要会线性筛两个积性函数的迪利克雷卷积 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} \rfloor}f(i) \]

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

提出右面第一项

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

通常有\(g(1)=1\)
重点是找到合适的\(g\)
一:求\(\mu\)前缀和
卷上\(I\)即可
二:求\(\varphi\)前缀和
还是卷上\(I\)即可
三:求\(f(n)=n\varphi(n)\)的前缀和
卷上id 发现\((id*f)(n)=\sum_{d|n}d\varphi(d)\frac{n}{d}=n\sum_{d|n}\varphi(d)=n^2\)
四:求\(f(n)=\sum_{d|n}d\mu(d)\)的前缀和
\(g(d)=d\mu(d)\)则有\(f=g*I\)
\(g*id=\epsilon\) 所以\(f*id=I\)
五:求\(\varphi * \mu\)的前缀和
两次杜教筛 每次卷上\(I\)
六:求\(f(t)=\sum_{k|t}k^2\mu(k)\frac{t}{k}\)的前缀和
\(\nu(n)=n^2\mu(n)\)\(f=\nu*id\)
\(id_2(n)=n^2\) 发现\(id_2*\nu=\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}^n\sigma_0(k)=\sum_{k=1}^n\sum_{d|k}1=\sum_{d=1}^n\lfloor \frac{n}{d} \rfloor\)
八:求\(\sum_{i=1}^n\mu^2(i)\)
即求\(n\)以内的无平方因子数的个数
杜教筛_第1张图片
杜教筛_第2张图片
杜教筛_第3张图片
九:求\(\sum_{i=1}^n\sigma_0(i^2)\)
https://www.luogu.com.cn/blog/deco/solution-sp20173
十:\(f(n)=\sum_{i\le n}\mu(i)\lfloor \frac{n}{i} \rfloor^k\)\(\sum_{n\le N}f(n)\) \(\ N\le 10^9\ k\le 10^5\)
杜教筛_第4张图片

你可能感兴趣的:(杜教筛)