莫比乌斯反演学习笔记
莫比乌斯反演学习笔记
前言
之前学了一遍,只学了朴素的莫比乌斯反演,现在第二次面对不知道能否有所长进。
性质
莫比乌斯反演是数论中的重要内容。对于一些函数 \(f(n)\),如果难以直接求出它的值,但容易求得其倍数和或约数和 \(g(n)\),那么可以通过莫比乌斯函数反演简化运算,从而求得 \(f(n)\) 的值。
前置知识
数论分块+狄利克雷卷积。
莫比乌斯函数
\(\mu\) 为莫比乌斯函数,定义为:
\[\mu(n)=
\begin{cases}
1&n=1\\
0&n\text{ 含有平方因子}\\
(-1)^k&k\text{ 为 }n\text{ 的本质不同质因子个数}\\
\end{cases}
\]
即对于 \(n=\prod p_i^{\alpha_i}\):
\[\mu(n)=
\begin{cases}
1&n=1\\
0&\exists \alpha_i\ge 2\\
(-1)^i&\forall\alpha_i=1\\
\end{cases}
\]
容易看出,莫比乌斯函数是积性函数,同时满足以下性质:
\[\sum_{d|n}\mu(d)=\begin{cases}
1&n=1\\
0&n\ne 1
\end{cases}
\]
求解
由于莫比乌斯函数是积性函数,所以可以采用线性筛求解。
代码
void get_miu(int N){
miu[1]=1;
for(int i=2;i<=N;i++){
if(!vis[i]){
p[++cnt]=i;
miu[i]=-1;
}
for(int j=1;p[j]<=N/i;j++){
vis[i*p[j]]=1;
if(i%p[j]==0)break;//说明其含有平方因子,不做处理
else miu[i*p[j]]=-miu[i];//否则根据积性函数的性质求解
}
}
return ;
}
莫比乌斯变换
有以下两种形式,即文章开头提及的约数和和倍数和的形式。
约数和:如果 \(F(n)=\sum_{d|n}f(d)\),那么 \(f(n)=\sum_{d|n}\mu(\frac{n}{d})F(d)\)。
倍数和:如果 \(F(n)=\sum_{n|d}f(d)\),那么 \(f(n)=\sum_{n|d}\mu(\frac{d}{n})F(d)\)。