杜教筛是拿来求积性函数前缀和的东西
\(h=f*g\)\(s(n)=\sum\limits_{i=1}^ng(i)\)
而杜教筛可以在 \(O(n^{\frac 23})\) 的复杂度内求出 \(s(n)\),前提是存在两个很好求前缀和的函数 \(f\) 和 \(h\) 满足 \(h=f*g\)\(\sum\limits_{i=1}^{n}h(i)\)\(\sum\limits_{i=1}^n\sum\limits_{j|i}f(j)g(\frac{i}{j})\)\(=\sum\limits_{i=1}^nf(i)\sum\limits_{j=1}^{\lfloor\frac{n}{d}\rfloor}g(j)\)\(=\sum\limits_{i=1}^nf(i)s(\lfloor\frac{n}{i}\rfloor)\)\(\sum\limits_{i=1}^nh(i)=\sum\limits_{i=1}^nf(i)s(\lfloor\frac{n}{i}\rfloor)\)\(\sum\limits_{i=1}^nh(i)=\sum\limits_{i=2}^nf(i)s(\lfloor\frac{n}{i}\rfloor)+s(n)f(1)\)\(\sum\limits_{i=1}^nh(i)-\sum\limits_{i=2}^nf(i)s(\lfloor\frac{n}{i}\rfloor)=s(n)f(1)\)
到这里就可以用整除分块求了,这样解出复杂度 \(O(n^{\frac 34})\)
但是可以用欧拉筛预处理在 \(O(n^{\frac 23})\) 以内的前缀和,复杂度降到 \(O(n^{\frac 23})\)
常用函数\(\phi*I=id\)\(\mu*I=e\)