学习总结-莫比乌斯反演
(〇)前置知识
1.数论的基础知识(关于质数,约数)
2.二项式定理
3.数论分块*
4.积性函数*
5.\(Dirichlet\)卷积*
6.莫比乌斯函数*
注:带"*"号的本文会具体阐述
(一)数论分块
引理1:
这个公式比较容易理解,不详细阐述了。
略证一下:
\(\dfrac{a}{b}=\lfloor\dfrac{a}{b}\rfloor+r(0\leq r<1)\)
\(\lfloor\dfrac{a}{bc}\rfloor=\lfloor\dfrac{a}{b}\cdot\dfrac{1}{c}\rfloor=\lfloor\dfrac{\lfloor\frac{a}{b}\rfloor}{c}+\dfrac{r}{c}\rfloor=\lfloor\dfrac{\lfloor\frac{a}{b}\rfloor}{c}\rfloor\)
引理2:
这个引理描述了\(\lfloor \dfrac{n}{d}\rfloor\)的解的集合大小不会超过\(2\sqrt{n}\)
容易证明。
由此,我们可以得到一个算法:数论分块。
先来看这样的一个问题:求\(\sum\limits_{i=1}^{n} \lfloor\dfrac{n}{i}\rfloor\)
如果我们枚举每个\(i\),那么显然时间复杂度是\(\Theta(n)\),有没有更快的算法?
根据引理2我们可以知道,对于所有\(\lfloor\dfrac{n}{i}\rfloor\),至多只有\(2\sqrt{n}\)个不同的解。
直观感受一下:
不难发现,\(\lfloor\dfrac{n}{i}\rfloor\)的值是一段一段的(在一个连续的区间内),而这个区间的右端点恰好是\(\lfloor\dfrac{n}{\lfloor\frac{n}{i}\rfloor}\rfloor\)的值。
证明略。代码如下:
for(int l = 1, r; l <= n; l = r+1){
r = n/(n/l);
f(l, r);
}
[拓展]二维数论分块
什么是二维数论分块?
举个例子,如果我们要在求\(\lfloor\dfrac{n}{i}\rfloor\)的同时求出\(\lfloor\dfrac{m}{i}\rfloor\),这时就需要用到二维数论分块。
代码实现很简单只需要加上一行:
for(int l=1, r; l <= min(n, m); l = r+1){
r = min(n/(n/l), m/(m/l));
f(l, r);
}
(二)积性函数
定义
若函数\(f(n)\)满足\(f(1)=1\)且\(\forall x,y\in \mathbb{N_+},\gcd(x,y)=1\)都有\(f(xy)=f(x)f(y)\),则\(f(n)\)为积性函数。
若函数\(f(n)\)满足\(f(1)=1\)且\(\forall x,y\in\mathbb{N_+}\)都有\(f(xy)=f(x)f(y)\),则\(f(x)\)为完全积性函数。
性质
若\(f(x)\)和\(g(x)\)均为积性函数,则以下函数也为积性函数。
设\(x= \prod p_{i}^{k_i}\)其中\(p_i\)是质数
若\(F(x)\)为积性函数,则有\(F(x)=\prod F(p_i^{k_i})\)。
若\(F(x)\)为完全积性函数,则有\(F(x)=\prod F(p_i)^{k_i}\)
举例
单位函数:\(\varepsilon=[n=1]\)(完全积性函数)
恒等函数:\(\operatorname{id}_k(n)=n^k\)其中\(\operatorname{id}_1(n)\)简记作\(\operatorname{id}(n)\)(完全积性函数)
常数函数:\(\operatorname{1}(n)=1\)(完全积性函数)
除数函数:\(\sigma_k(n)=\sum\limits_{d|n}d^k\)(积性函数)
欧拉函数:\(\varphi(n)=\sum\limits_{i=1}^{n}[\gcd(i,n)=1]\)(积性函数)
(三)\(Dirichlet\)卷积
又称“狄利克雷卷积”。
定义
定义两个数论函数\(f,g\)的\(Dirichlet\)卷积为:
性质
\(Dirichlet\)卷积满足一下运算规律:
1.交换律:\(f*g=g*f\)
2.结合律:\((f*g)*h=f*(g*h)\)
3.分配律:\(f*(g+h)=f*g+f*h\)
4.\(f*\varepsilon=f\)其中\(\varepsilon\)是\(Dirichlet\)卷积的单位元
例子(公式)
(四)莫比乌斯函数
定义
\(\mu\)为莫比乌斯函数,定义为
其中\(\omega(n)\)表示\(n\)的本质不同质因子个数,它也是一个积性函数。
性质(敲黑板)
除了积性函数的性质以外,莫比乌斯函数还有如下性质
即
证明:
设\(n=\prod\limits_{i=1}^{k}p_i^{c_i},n'=\prod\limits_{i=1}^kp_i\)
那么\(\sum\limits_{d|n}^k\mu(d)=\sum\limits_{d|n'}^k\mu(d)\)
(解释:因为由莫比乌斯函数的定义可知,当\(c_i>1\)时,\(\mu(p^{c_i})=0\))
\(\sum\limits_{d|n'}=\mu(d)=\sum\limits_{i=0}^kC_k^i\cdot(-1)^i\)
(解释:因为\(n'\)的因子全是由质数\(p_i\)组成的,所以在\(n'\)的\(k\)个质因子中选出\(i\)个可以组合成\(n'\)的所有因子,然后根据选出的质因子个数判断符号是正是负)
(\(ps\):到了这一步有没有发现很像某个定理)
根据二项式定理:
得:
\(\sum\limits_{i=0}^{k}C^i_k\cdot(-1)^i=\sum\limits_{i=0}^{k}\dbinom{k}{i}\times1^{n-i}\times(-1)^i=(1-1)^k=0^k\)
该式子的值在\(k=0\)时即\(n=1\)时值为\(1\),否则为\(0\)。所以,
\(\sum\limits_{d|1}^n\mu(d)=[n=1]=\varepsilon(n),\mu*1=\varepsilon\)
线性筛
问题来了,知道了性质,如何求莫比乌斯函数?
使用线性筛。线性筛基本可以求所有的积性函数,莫比乌斯函数也在其中。
代码:
mu[1] = 1;
for(int i=2; i<=N; i++){
if(!vis[i]) prime[++cnt] = i, mu[i] = -1;//找出素数,素数的莫比乌斯函数值为-1
for(int j=1; j<=cnt and i*prime[j] <= N; j++){
vis[i*prime[j]] = true;//标记以当前素数为最小质因子的合数
if(i%prime[j] == 0){
mu[i*prime[j]] = 0;//如果该合数由两个相同的质因子,莫比乌斯函数值为0
break;
}
mu[i*prime[j]] = -mu[i];
}
}
(五)莫比乌斯反演
设\(f(n),g(n)\)为两个数论函数,
如果有\(f(n)=\sum\limits_{d|n}g(d)\),那么有\(g(n)=\sum\limits_{d|n}\mu(d)\cdot f(\dfrac{n}{d})\)
如果有\(f(n)=\sum\limits_{n|d}g(d)\),那么有\(g(n) = \sum\limits_{d|n}\mu(\dfrac{d}{n})\cdot f(d)\)
换一种更加简洁的写法,狄利克雷卷积:
\(f=g*1\iff f*\mu=g\)
另外几个常用公式
\(\varepsilon=\mu*1\iff [x=1]=\sum\limits_{d|n}\mu(d)\)
\(\varphi*1=\operatorname{id}\iff \varphi=\operatorname{id}*\mu\)
好了,公式看了这么多,来做几组练习。
练习(练习中设\(N\leq M\))
1.求\(\sum\limits_{i=1}^N\sum\limits_{j=1}^{M}[\gcd(i,j)=1]\)
解:原式\(=\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{M}\varepsilon(\gcd(i,j))\\=\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{M}\sum\limits_{d|(i,j)}\mu(d)\\=\sum\limits_{d=1}^{N}\mu(d)\cdot\sum\limits_{i=1}^{\lfloor\frac{N}{d}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{M}{d}\rfloor}1\\=\sum\limits_{d=1}^{N}\mu(d)\lfloor\dfrac{N}{d}\rfloor\lfloor\dfrac{M}{d}\rfloor\)
2.求\(\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{M}[\gcd(i,j)=k]\)
解:原式\(=\sum\limits_{i=1}^{\lfloor\frac{N}{k}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{M}{k}\rfloor}[\gcd(i,j)=1]\)
然后用与练习1一样的方式求解即可。
3.求\(\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{M}\operatorname{lcm}(i,j)\)
解:原式\(=\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{M}\dfrac{ij}{\gcd(i,j)}\\=\sum\limits_{d=1}^{N}\sum\limits_{i=1}^{N}\sum\limits_{j=1}^{M}[\gcd(i,j)=d]\dfrac{ij}{d}\\=\sum\limits_{d=1}^{N}d\sum\limits_{i=1}^{\lfloor\frac{N}{d}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{M}{d}\rfloor}ij[\gcd(i,j)=1]\\=\sum\limits_{d=1}^{N}d\sum\limits_{i=1}^{\lfloor\frac{N}{d}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{M}{d}\rfloor}ij\sum\limits_{x|(i,j)}\mu(x)\\=\sum\limits_{d=1}^{N}d\sum\limits_{x=1}^{\lfloor\frac{N}{d}\rfloor}\mu(x)x^2\sum\limits_{i=1}^{\lfloor\frac{N}{dx}\rfloor}\sum\limits_{j=1}^{\lfloor\frac{M}{dx}\rfloor}ij\\=\sum\limits_{d=1}^{N}d\sum\limits_{x=1}^{\lfloor\frac{N}{d}\rfloor}\mu(x)x^2\dfrac{\lfloor\frac{N}{dx}\rfloor(\lfloor\frac{N}{dx}\rfloor+1)\lfloor\frac{M}{dx}\rfloor(\lfloor\frac{M}{dx}\rfloor+1)}{4}\)
真不容易~
留坑待补。