莫比乌斯变换与莫比乌斯反演
更新日志
2025/01/24:开工。2025/07/21:重构。
前言
其实 OI 中用得到的只有数论中的莫比乌斯函数,甚至就是最后那一个反演结论……
前置知识
狄利克雷(Dirichlet)卷积
狄利克雷卷积用 \(*\) 表示。我们使用 \(h=f*g\) 表示:
狄利克雷卷积的单位元是单位函数 \(\varepsilon\),即对于任何数论函数 \(f\) 有 \(f*\varepsilon=f\)。
函数 \(f\) 在狄利克雷卷积中的逆元 \(g\) 满足 \(f*g=\varepsilon\),记作 \(g=f^{-1}\)。
事实上这些都用不到。。
莫比乌斯函数
莫比乌斯函数 \(\mu\),满足 \(\mu=\zeta^{-1}\)。其中 \(\mu\) 和 \(\zeta\) 均为二元函数。
然后我们可以得到:
下面简单证明一下。
首先有一个结论,这个结论还要证明的话就太麻烦了,因此就直接给出,有兴趣的自行查询吧。
显然可以如下表示 \(\mu(x,y)\):
然后代入一下就得到上面的公式了。
数论意义下的莫比乌斯函数
定义
其中我们分解 \(n=\prod\limits_{i=1}^kp_i^{c_i}\)。
性质
有 \(\mu=\zeta^{-1}\),即 \(\mu*\zeta=\varepsilon\),于是:
此外还有:
证明挂个 OI-wiki 链接。
线性筛
直接按定义筛就行,对着代码理解吧。
int pcnt;
int st[N],pr[N],mu[N];
void getmu(int n){
	mu[1]=1;
	rep(i,2,n){
		if(!st[i]){pr[++pcnt]=i;mu[i]=-1;}
		for(int j=1;i*pr[j]<=n;j++){
			st[i*pr[j]]=1;
			if(i%pr[j]==0)break;
			else mu[i*pr[j]]=-mu[i];
		}
	}
}
莫比乌斯变换与莫比乌斯反演
结论
证明?把 \(\left[\gcd(i,j)=1\right]\) 写成 \(\varepsilon(\gcd(i,j))\) 即可。
莫比乌斯变换
若有 \(f(n)=\sum\limits_{d\mid n}g(d)\),那么有 \(g(n)=\sum\limits_{d\mid n}\mu(d)f(\frac{n}{d})\)。
\(f\) 为 \(g\) 的莫比乌斯变换,\(g\) 为 \(f\) 的莫比乌斯反演。
还有另一种形式,若有 \(f(n)=\sum\limits_{n\mid d}g(d)\),那么有 \(g(n)=\sum\limits_{n\mid d}\mu(\frac{d}{n})f(d)\)。
证明就不在这里写了,挂个 OI-wiki 链接。

 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号