数论GPBH,因此开坑html
(照抄)参考函数
1.定义:ui
2.性质:spa
1.定义:htm
2.性质:blog
1.定义:get
2.性质:积性函数it
1.定义:io
2.性质:积性函数gc
1.定义:
2.性质:
1.定义:
2.性质:
1.定义:
2.性质:
1.证实莫比乌斯反演:
假设咱们已知:$F(n)=\sum_{d|n}f(d)$
考虑利用数论函数将它化成卷积的形式:$F=f*I$
两边卷上$\mu$,获得:
$F*\mu=f*I*\mu$
结合律?
$...=f*(I*\mu)$
回忆一下$\mu$的性质:
$\sum \limits _{d|n} \mu (d)= [n=1]$
也能够写成:
$I* \mu = \epsilon$
那么有$...=f*\epsilon=f$
把它从新写成广泛形式:$f=F*\mu \rightarrow f(n)=\sum_{d|n}\mu(d)\cdot F(\frac{n}{d})$
2.证实$\frac{\varphi(n)}{n}=\sum \limits _{d|n}\frac{\mu(d)}{d}$
还记得$\varphi$的性质嘛?
$\sum \limits _{d|n} \varphi (d)=n$
表示成卷积的形式就是$\varphi * I = id$
跟上一个证实相似,若是两边都卷上$\mu$:
$\varphi * I * \mu = id * \mu$
$\varphi * \epsilon =id* \mu $
$\varphi = id * \mu \rightarrow \sum \limits _{d|n} \mu (d) \cdot \frac{n}{d}$
两边同时除以$n$即得证。
终于到了这个大坑……
杜教筛解决的是要求在低于线性时间内求积性函数前缀和的问题。
假设咱们要求 $S(n)=\sum \limits _{i=1}^n f(i)$
那么首先构造两个积性函数$g$和$h$,知足$h=f*g$。
显然有:
$\sum \limits _{i=1}^{n}h(i)=\sum \limits _{i=1}^{n}\sum \limits _{d|i}g(d)\cdot f(\frac{i}{d})\\\to =\sum \limits_{d=1}^{n}g(d)\cdot\sum \limits_{i=1}^{\lfloor\frac{n}{d}\rfloor}f({i})$
停一下。这一步可能会看起来比较懵逼,其实就是把原来先枚举每一个数再枚举它的因数,变成了枚举因数并考虑$n$的范围内有多少个数包含它。
咱们继续:
$\sum \limits _{i=1}^{n}h(i)=\sum \limits _{d=1}^{n}g(d)\cdot S(\lfloor\frac{n}{d}\rfloor)$
拆出第一项:
$\sum \limits _{i=1}^{n}h(i)=g(1)\cdot S(n)+\sum \limits _{d=2}^{n}g(d)\cdot S(\lfloor\frac{n}{d}\rfloor)$
$g(1)S(n)=\sum \limits _{i=1}^{n}h(i)-\sum \limits _{d=2}^{n}g(d)\cdot S(\lfloor\frac{n}{d}\rfloor)$
到了这步,若是你能快速求出$h(i)$的前缀和,就能够经过对后面那项进行整除分块来求出$S(n)$。时间复杂度为$O(n^{\frac{2}{3} })$。
好比咱们要求的$f$是$\mu$,那根据$\mu*I=\epsilon$能够获得:
$S(n)=1-\sum \limits _{d=2}^{n}S(\lfloor\frac{n}{d}\rfloor)$
筛$\varphi$也是同理,利用$\varphi*I=id$便可。(实际上是我懒得写了因此就同理啦QAQ)
(然而代码实现还不是很熟练……先咕了)
To Be Continued...