杜教筛 1

这是一个比较好理解的一个亚线性筛法
用处是求一个形如\(S(n)=\sum\limits^{n}_ {x=1}f(x),f(x)\)积性函数这样一个东西

前置知识

狄利克雷卷积

定义数论函数的狄利克雷卷积长这样
\((f* g)(n)=\sum\limits_ {x|d}f(x)\cdot g(\frac{n}{x})\)

一些常见的积性函数以及一些卷积

\(\mu*1=\epsilon\)
\(\mu * id=\varphi\)
\(\varphi * 1= id\)

莫比乌斯反演

先去做几道题,容易更好看出这个东西咋搞的

构造原理

我们首先找到一个合适的\(g\)函数
具体就是可以快速求出\(f* g\)的前缀和
然后接下来变换这个东西
拆卷积
\(\sum\limits^{n}_ {x=1}(f* g)(x)=\sum\limits^{n} _ {x=1}\sum\limits _ {y|x}g(x)\cdot f(y)\)
换形式
\(\sum\limits^{n}_ {x=1}(f* g)(x)=\sum\limits^{n} _ {x=1}\sum\limits^{\lfloor\frac{n}{x}\rfloor} _ {y=1}g(x)\cdot f(y)\)
提前
\(\sum\limits^{n}_ {x=1}(f* g)(x)=\sum\limits^{n} _ {x=1}g(x)\sum\limits^{\lfloor\frac{n}{x}\rfloor} _ {y=1} f(y)\)
后面就是\(S(\lfloor\frac{n}{x}\rfloor)\)
\(\sum\limits^{n}_ {x=1}(f* g)(x)=\sum\limits^{n} _ {x=1}g(x)\cdot S(\lfloor\frac{n}{x}\rfloor)\)
考虑\(x=1\)的时候分离这一项,这样就有\(S(n)\)
\(\sum\limits^{n}_ {x=1}(f* g)(x)=g(1)\cdot S(n)+\sum\limits^{n} _ {x=2}g(x)\cdot S(\lfloor\frac{n}{x}\rfloor)\)
移项,会有
\(g(1)\cdot S(n)=\sum\limits^{n}_ {x=1}(f* g)(x)-\sum\limits^{n} _ {x=2}g(x)\cdot S(\lfloor\frac{n}{x}\rfloor)\)
前面那个\(f* g\)是能快速算出来的,后面递归整除分块做即可
时间复杂度\(O(n^{\frac{3}{4}})\)

posted @ 2022-11-20 07:38  2K22  阅读(47)  评论(0)    收藏  举报