莫比乌斯反演略解
参考资料
定义
更常用的:$$f(n)=\sum_{n|d}g(d) \Rightarrow g(n)=\sum_{n|d} \mu(\frac{d}{n})f(d).$$
其中 \(\mu(n)\) 是莫比乌斯函数,它的定义是:
- \(\mu(n)=1\) 当 \(n=1\)。
- \(n=p_1p_2p_3 \cdots p_k\),其中 \(p_i\) 互不相同,则 \(\mu(n)=(-1)^k\)。
- 其它情况,\(\mu(n)=0\)。
常用性质
- 对任意正整数 \(n\) 有:\[\sum_{d|n}\mu(d)=\begin{cases} 1 & n=1 \\ 0 & n>1\end{cases}. \]
- (很少用)对任意正整数 \(n\) 有:\[\sum_{d|n}\frac{\mu(d)}{d}=\frac{\varphi(n)}{n}. \]
证明
对性质1的证明
\(n=1\) 时答案显然。
\(n > 1\) 时,设 \(n=p_1^{a_1}p_2^{a_2} \ldots p_k^{a_k}\),在 \(n\) 的所有因子中,若 \(\mu\) 不为0,这些因子的质因子次数为1或0。则
二项式定理,\((x+y)^n=\sum_{i=0}^nC_n^ix^iy^{n-i}\)。令\(x=-1,y=1\),证毕。
对定义1的证明
欲证 \(g(n)=\sum_{d|n} \mu(d)f(\frac{n}{d})\)。
有
分别根据定义和分配律。
可以发现,这是所有满足 \((de)|n\) 的 \(\mu(d) \cdot g(e)\) 之和。
所以可以交换sum,变成
最后一个根据分配律逆定律得来。
只有当 \(n/e=1\) 也就是 \(e=n\) 的时候 \(\sum_{d|\frac{n}{e}}\mu(d)\)才为1,其余时候都为0。
于是 \(\sum_{d|n} \mu(d)f(\frac{n}{d}) = g(n)\)。证毕。
对定义2的证明
欲证 \(g(n)=\sum_{n|d} \mu(\frac{d}{n})f(d)\)。
记\(k=d/n\)。 以下证明省略 \(k\) 的上届(视题而定)。
只有当 \(t/n=1\) 也就是 \(t=n\) 的时候 \(\sum_{k|\frac{t}{n}}\mu(k)\)才为1,其余时候都为0。
于是 \(\sum_{n|d} \mu(\frac{d}{n})f(d)=g(n)\)。证毕。
实用意义
主要是用于当 \(g(x)\) 比较不好搞但是其“倍数和”或者是“约数和” \(f(x)\) 比较好搞的时候。
一些代码
线性筛莫比乌斯函数
void shai(){
memset(isp, true, sizeof(isp));
isp[0] = isp[1] = false;
mu[1] = 1;
for(int i=2; i<=100000; i++){
if(isp[i]) pri[++cnt] = i, mu[i] = -1;
for(int j=1; j<=cnt; j++){
if(i*pri[j]>100000) break;
isp[i*pri[j]] = false;
if(i%pri[j]==0){
mu[i*pri[j]] = 0;
break;
}
mu[i*pri[j]] = -mu[i];
}
}
}
例题
hdu 1695

浙公网安备 33010602011771号