[笔记乱写]关于数论函数(关于卷积的一些证明+杜教筛)

数论GPBH,所以开坑

(照抄)参考

常见的数论函数

莫比乌斯函数$mu$

1.定义:

  • $mu (1)=1$
  • 若$d$没有平方因子,$mu (d) = (-1)^k$,$k$为$d$的质因数个数
  • 否则$mu (d)=0$

2.性质:

  • 对于任意正整数$n$,有$sum limits_{d|n}mu (d)=[n=1]$。
  • $mu$为积性函数。
  • $sum limits _{d|n}frac{mu(d)}{d}=frac{phi(n)}{n}$

欧拉函数$varphi $

1.定义:

  • $varphi (n)= sum limits _{i=1}^{n} [gcd(i,n)=1]$

2.性质:

  • $sum limits _{d|n} varphi (d)=n$
  • $varphi(n) = n * prod (1 - frac{1}{p_i})$
  • $a^{varphi(m)} equiv 1 pmod {m}$
  • 对于$n=p^k$,有$varphi(n) = (p - 1) * p^{k - 1}$
  • 积性函数

约数个数$d()$

1.定义:

  • RT

2.性质:积性函数

约数和$sigma ()$

1.定义:

  • RT

2.性质:积性函数

元函数$epsilon$

1.定义:

  • $epsilon(n)=[n=1]$

2.性质:

  • 对于任意积性函数$f$,有$f*epsilon=f$。
  • 积性函数

单位函数$I()$

1.定义:

  • $I(n)$恒为1。

2.性质:

  • 积性函数

恒等函数$id()$

1.定义:

  • $id(n)=n$

2.性质:

  • 积性函数

 狄利克雷卷积

  • 定义:对于两个数论函数$f$和$g$,它们的狄利克雷卷积为$(f*g)(n)=sum limits_{d|n} f(d) cdot g(frac{n}{d})$。
  • 性质:狄利克雷卷积满足交换律、结合律和分配律。即:$f*g=g*f$       $(f*g)*h=f*(g*h)$       $(f+g)*h=f*h+g*h$

狄利克雷卷积的一些应用:

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 ightarrow 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 ightarrow 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})\ o =sum limits_{d=1}^{n}g(d)cdotsum limits_{i=1}^{lfloorfrac{n}{d} floor}f({i})$

停一下。这一步可能会看起来比较懵逼,其实就是把原来先枚举每个数再枚举它的因数,变成了枚举因数并考虑$n$的范围内有多少个数包含它。

我们继续:

$sum limits _{i=1}^{n}h(i)=sum limits _{d=1}^{n}g(d)cdot S(lfloorfrac{n}{d} floor)$

拆出第一项:

$sum limits _{i=1}^{n}h(i)=g(1)cdot S(n)+sum limits _{d=2}^{n}g(d)cdot S(lfloorfrac{n}{d} floor)$

$g(1)S(n)=sum limits _{i=1}^{n}h(i)-sum limits _{d=2}^{n}g(d)cdot S(lfloorfrac{n}{d} floor)$

到了这步,如果你能快速求出$h(i)$的前缀和,就可以通过对后面那项进行整除分块来求出$S(n)$。时间复杂度为$O(n^{frac{2}{3} })$。

比如我们要求的$f$是$mu$,那根据$mu*I=epsilon$可以得到:

$S(n)=1-sum limits _{d=2}^{n}S(lfloorfrac{n}{d} floor)$

筛$varphi$也是同理,利用$varphi*I=id$即可。(其实是我懒得写了所以就同理啦QAQ)

(然而代码实现还不是很熟练……先咕了)

To Be Continued...

原文地址:https://www.cnblogs.com/Rorschach-XR/p/11754321.html