最大公约数:小学学过,这里只提一些重要的公式:html
$·$若$a=b$,则$\gcd(a,b)=a=b$;函数
$·$若$\gcd(a,b)=d$,则$\gcd(b,a-b)=d$,因此就有了欧几里得展转相除法;post
$·$若是$a$为偶数,$b$为奇数,则$\gcd(a,b)=\gcd\left(\dfrac a2,b\right)$;url
$·$若是$a$、$b$均为偶数,则$\gcd(a,b)=2\times \gcd\left(\dfrac a2,\dfrac b2\right)$。spa
$·$若$\gcd(a,b)=d$,则$\gcd\left(\dfrac ad,\dfrac bd\right)=1$;htm
数论函数:定义域为正整数、值域是复数的子集的函数称为数论函数。$\text{OI}$中通常都是整数。blog
积性函数:设$f$为数论函数,对于任意互质的两个正整数$a$、$b$,且$f(a)f(b)=f(ab)$,则$f$是积性函数。若是对于任意两个正整数$a$、$b$知足$f(a)f(b)=f(ab)$,则称之为彻底积性函数。区别二者。get
因式分解:这个小学就学过了。用如今的知识说,$n=p_1^{\alpha_1}p_2^{\alpha_2}···p_s^{\alpha_s}$是$n$的标准分解,$p_1,p_2,···,p_s$均为质数。it
根据以上三条,能够获得:对于积性函数$f$,有$f(n)=f(p_1^{\alpha_1})f(p_2^{\alpha_2})···f(p_s^{\alpha_s})$,因此研究积性函数能够研究其在素数的幂上的取值。io
因此咱们能够用$\text{Euler}$筛法线性时间内求解出所需的$f$的值。
单位函数:$\epsilon(n)=[n=1]=\left\{\begin{aligned}1,n=1\\0,n\ne1\end{aligned}\right.$。其中$[\text{state}]$表示当$\text{state}$为真时值为$1$,不然为$0$。单位函数是彻底积性函数。
除数函数:$\sigma_k(n)$表示$n$的因子的$k$次方之和:$\sigma_k(n)=\sum\limits_{d|n}d^k$。当$k=0$时变成求其约数个数,此时写做$d(n)$;当$k=1$时变成求约数和,此时写做$\sigma(n)$。除数函数是积性函数。
$\text{Euler}$函数:表示不超过$n$且与$n$互质的正整数的个数,根据容斥原理可得:$\varphi(n)=n·\prod\limits_{i=1}^s\left(1-\dfrac{1}{p_i}\right)$。其中$n=p_1^{\alpha_1}p_2^{\alpha_2}···p_s^{\alpha_s}$是$n$的标准分解。
而后对于$\text{Euler}$函数,有一个性质:$n=\sum\limits_{d|n}\varphi(d)$。
证实:考虑根据与$n$的最大公约数分组,设$\gcd(n,i)=d$,则根据前面所讲的性质获得$\gcd\left(\dfrac nd,\dfrac id\right)=1$,因此与$n$的最大公约数为$d$的数有$\varphi\left(\dfrac nd\right)$,又由于全部$\leq n$的数与$n$的最大公约数$d$必定整除$n$,因此可得:$n=\sum\limits_{d|n}\varphi\left(\dfrac nd\right)=\sum\limits_{d|n}\varphi(d)$。(由于$d$和$\dfrac nd$成对出现,因此能够替换)
$\text{Dirichlet}$卷积:设$f$、$g$是数论函数,对于数论函数$h$若是知足$h(n)=\sum\limits_{d|n}f(d)g\left(\dfrac nd\right)$,则称$h$为$f$和$g$的$\text{Dirichlet}$卷积,简写成$h=f*g$。对于任意的数论函数$f$,有$f*\epsilon=f$。$\text{Dirichlet}$卷积知足交换律和结合律。$h=f*g$为积性函数当且仅当$f,g$为积性函数。
幂函数:表示$n^k$,写做$\text{Id}_k(n)$,当$k=1$时$k$可不写。通常看成记号。
根据这些咱们能够将上面的式子改为$\text{Dirichlet}$卷积的形式,例如除数函数的性质可写成$\sigma_k(n)=\text{Id}_k*1$,$\text{Euler}$函数的性质可写成$\text{Id}=\varphi*1$。
$\text{Mobius}$函数:定义$\mu(n)=\left\{\begin{array}{ll}1 & n=1\\(-1)^s & n=p_1p_2···p_s\text{且}p_1,p_2,···,p_s\text{互不相等}\ &\\0 & \text{其余(也就是含有因数为质数的平方)}\end{array}\right.$。$\mu$是积性函数。
$\text{Mobius}$函数重要的性质:$\sum\limits_{d|n}\mu(d)=\epsilon(n)$。用$\text{Dirichlet}$卷积表示就是$\mu*1=\epsilon$。
证实:$n=1$时成立是显然的。若$n>1$,设素因子有$s$个,若是$d$出现了$2$次相同的素因子,根据定义$\mu(d)=0$,因此只考虑$d$中素因子的指数为$0$或$1$时。即$d$为$s$个素因子中任意选取$0\text{~}s$个素因子的乘积,因此得:$\sum\limits_{d|n}\mu(d)=\sum\limits_{i=0}^s(-1)^i\left(\begin{matrix}s\\i\end{matrix}\right)=(1-1)^s=0$。结果和$\epsilon$定义同样,即证。
$\text{Mobius}$变换:设$f$为数论函数,若函数$g$知足$g(n)=\sum\limits_{d|n}f(d)$,则称$g$为$f$的$\text{Mobius}$变换,$f$为$g$的$\text{Mobius}$逆变换。也能够写做$g=f*1$。
$\text{Mobius}$反演定理:上面的$\text{Mobius}$变换的充要条件为$f(n)=\sum\limits_{d|n}g(d)\mu\left(\dfrac nd\right)$。能够写做$f=g*\mu$。对此的推导很简单,由$f=g*\mu$得$f*1=g*\mu*1$,根据$\mu*1=\epsilon$得$f*1=g*(\mu*1)=g*\epsilon$,又由于$f*\epsilon=f$,因此$g*\epsilon=g=f*1$,就获得了上面的$\text{Mobius}$变换。
通常的求解就是利用卷积转化原式,再经过调换求和顺序或者经过整除分块的科技下降复杂度。经常使用的卷积就是上面所述(还算比较套路的8虽然我仍是很弱)。