最大公約數:小學學過,這裏只提一些重要的公式: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雖然我仍是很弱)。