Dirichlet 卷积学习笔记
Dirichlet 卷积学习笔记
数论函数:数论函数亦称算术函数,一类重要的函数,指定义在正整数集上的实值或复值函数,更一般地,也可把数论函数看做是某一整数集上定义的函数。
然而百科在说什么鬼知道呢,感性理解一下,数论函数的定义域是正整数,值域也是正整数。
数论函数的相关运算与性质
- 设有数论函数\(\bf{h,f,g}\)。
-
加法运算
\((\mathbf {f}+\mathbf {g})(n)=\mathbf {f}(n)+\mathbf {g}(n)\)
即每项相加
-
数乘运算
\((x\mathbf f )(n)=x\mathbf f(n)\)
即每项相乘
-
卷积乘\(*\)
若\(\mathbf h=\mathbf f*\mathbf g\)
那么\(\mathbf h(n)=\sum\limits_{i|n}\mathbf f(i)\mathbf g(\frac{n}{i})\)
-
交换律
\(\bf f*g=g*f\)
显然 -
结合律
\((\mathbf f*\mathbf g)*\mathbf h=\mathbf f*(\mathbf g*\mathbf h)\)
意会 -
分配律
\((\mathbf f+ \mathbf g)*\mathbf h=\mathbf f*\mathbf h+\mathbf g*\mathbf h\)
意会 -
单位元
定义数论函数\(\epsilon(n)=[n=1]\)
对任意\(\mathbf f\),有\(\mathbf f=\mathbf f*\epsilon\)
显然 -
逆元
对于任意的\(\mathbf f(1)\not=0\)的数论函数,存在一个\(\mathbf g\)使得\(\mathbf g*\mathbf f=\epsilon\)
对于\(\mathbf g\)有构造
\[\mathbf g(n)=\frac{1}{\mathbf f(1)}([n=1]-\sum_{i|n,i\not=1}\mathbf f(i)\mathbf g({\frac{n}{i}})) \]证明代入卷积计算就可以了。
-
积性函数
满足若\(a \bot b\),那么\(\mathbf f(ab)=\mathbf f(a)\mathbf f(b)\)的数论函数被成为积性函数。
-
两个积性函数的卷积是积性函数
证明重要吗 -
一个积性函数的逆也是积性函数
证明重要吗 -
任何一个积性函数都可以线性筛出来
常见积性函数及其性质
令\(n=\prod\limits_{i=1}^k p_i^{c_i}\)
- \(\mathbf 1(n)=1\),常函数
- \(\mathbf {Id}(n)=n\),常函数
- \(\mathbf {Id}^k(n)=n^k\),常函数的一般形式
- \(\epsilon(n)=[n=1]\),单位元
- \(\mu(n) = [\max(c_1,c_2,\dots,c_k) \le 1](-1)^k\) ,莫比乌斯函数
- \(\varphi(n)=n\prod\limits_{i=1}^k(1-\frac{1}{p_i})\),欧拉函数
- \(\mathbf d(n)=\sum\limits_{d|n}1\),约数个数
- \(\sigma(n)=\sum\limits_{d|n}d\),约数和
- \(\lambda(n)=(-1)^k\)
-
莫比乌斯函数
我们尝试把\(\mu\)给定义出来,定义\(\mu\)为\(\mathbf 1\)的逆。
则有\(\mu * \mathbf 1=\epsilon\)
换成我们熟悉的形式就是\(\sum_{d|n}\mu(d)=[n=1]\)
尝试构造\(\mu\),显然\(\mu(1)=1\)。
然后发现对于质数\(p\),满足\(\sum_{d|p^k}\mu=0\),即\(1+\mu(p)+\mu(p^1)+\dots+\mu_(p^k)=0\)。
通过一些简单的反证可以得到\(\mu(p^k)=-[k\le 1],k\not=0\)
因为\(\mathbf1\)是积性函数,所以\(\tt{Ta}\)的逆\(\mu\)也是积性函数。
然后我们就可以得到\(Ta\)的函数式,即
\(\mu(n) = [\max(c_1,c_2,\dots,c_k) \le 1](-1)^k\)
或者说是
\[\mu(n)=\left\{\begin{aligned}(-1)^k \ \ if \ squarefree \\0 \ \ \ \ \ \ \ \ \ \ \ \ \ ohterwise\\\end{aligned}\right. \]特殊的,\(\mu(1)=1\).
\(squarefree\) 表示对\(n\),\(\forall c_i=1\).
之类的一些定义。
-
莫比乌斯反演
若\(\mathbf g=\mathbf f *\mathbf 1\),那么\(\mu*\mathbf g=\mathbf f*\mu*\mathbf 1\),即\(\mathbf f=\mu*\mathbf g\)
换成熟悉的形式,若\(\mathbf g(n)=\sum\limits_{d|n}\mathbf f(d)\),那么$\mathbf f(n)=\sum\limits_{d|n} \mu(d)\times \mathbf g(\frac{n}{d}) $,于是我们较为简单的证明了反演。
对于实际中更加常用的第二类反演,我们可以定义一种类似与卷积的新运算进行证明。
筛法:
for(int i=2;i<=N;i++) { if(!ispri[i]) { mu[i]=-1; pri[++cnt]=i; } for(int j=1;j<=cnt&&pri[j]*i<=N;j++) { ispri[i*pri[j]]=1; if(i%pri[j]==0) break; else mu[i*pri[j]]=-mu[i]; } }
-
-
欧拉函数
其实这个也可以定义出来的,不过从意义的角度说明\(\tt{Ta}\)会更加的自然。
\(\varphi(n)\)代表\(1 \sim n-1\)中与\(n\)互质的数的个数,考虑证明\(\tt{Ta}\)的计算式。
可以用容斥说明一波,不过这个用用和积性函数有关的东西叭。
\(\varphi(p^k)=p^k-p^{k-1}=p^k(1-\frac{1}{p})\)
唯一分解\(n=\prod\limits_{i=1}^k p_i^{c_i}\)
那么\(\varphi(n)=\prod\limits_{i=1}^kp_i^{c_i}(1-\frac{1}{p_i})=n\prod\limits_{i=1}^k(1-\frac{1}{p_i})\)
然后我们考虑证明\(Ta\)的一个性质,\(\varphi *\mathbf 1=\mathbf {Id}\),也就是我们熟悉的\(\sum_{d|n}\varphi(d)=n\)。
证明起来很简单,设\(\mathbf t=\varphi *\mathbf 1\),那么\(\mathbf t\)为积性函数,我们先搞出\(\tt{Ta}\)的素数幂的式子,然后乘起来就行了。
筛法
for(int i=2;i<=N;i++) { if(!ispri[i]) { pri[++cnt]=i; phi[i]=i-1; } for(int j=1;j<=cnt&&i*pri[j]<=N;j++) { ispri[i*pri[j]]=1; if(i%pri[j]==0) { phi[i*pri[j]]=phi[i]*pri[j]; break; } else fphi[i*pri[j]]=phi[i]*(pri[j]-1); } }
-
其他相关性质
-
\(\varphi *\mathbf 1=\mathbf {Id}\Rightarrow \varphi=\mu *\mathbf {Id}\)
-
\(\mathbf d=\mathbf1 *\mathbf1 \Rightarrow \mu*\mathbf d=\mathbf1\)
-
\(\sigma=\mathbf {Id}*\mathbf 1 \Rightarrow \mathbf {Id}=\sigma*\mu\)或\(\sigma=\mathbf {Id}*\mathbf 1 \Rightarrow \sigma=\varphi*\mathbf d\)
-