莫比乌斯反演入门
莫比乌斯反演
前置知识:容斥 整除分块
莫比乌斯函数
设正整数 \(N\) 按照算术基本定理分解质因数为 \(N=\Pi_{i=1}^m p_i^{c_i}\) ,定义函数:
我们称 \(\mu(N)\) 为莫比乌斯函数,具体的构造思路可以看 这里 讲 FWT 的本质的部分
通俗地讲,当 \(N\) 包含相等的质因子时, \(\mu(N)=0\)
当 \(N\) 的所有质因子各不相同时,若 \(N\) 有偶数个质因子,\(\mu(N)=1\)
若 \(N\) 有奇数个质因子,\(\mu(N)=-1\)
它有一些性质:
-
对于任意正整数 \(n\) ,\(\sum_{d|n}\mu(d)=[n=1]\)
( \([n=1]\) 表示只有当 \(n=1\) 成立时,返回值为 \(1\);否则,值为 \(0\))
简单地证明一下:
\(n=1\) 时显然成立
对于 \(n\neq1\) 的情况:
证明一:对于一个 \(p_i\) 强制选或不选,其他随便,会产生 奇数/偶数 个质因子两种情况,抵消为 \(0\)
证明二:若 \(d\) 中含 \(p_i^{a_i},a_i>=2\) ,即 \(\mu(d)=0\) 忽略
那么, \(\mu\) 的取值仅仅与质因数个数有关
\((i)\) \(n\) 有奇数个(\(x\)个)质因数
\(\sum_{d|n}\mu(d)=-1\times(C_x^1+C_x^3+C_x^5...+C_x^x)+(C_x^2+C_x^4+...+C_x^{x-1})\)
又有:\(C_x^y=C_x^{x-y}(y<x)\) 全部抵消
\((ii)\) \(n\) 有偶数个质因数:同理。
- 对于任意正整数 \(n\),\(\sum_{d|n}\frac{μ(d)}d=\frac{ϕ(n)}n\)
从略。(不会)
程序实现并不难,我们可以在线性筛素数的程序上略作修改,便可以筛出 \(μ\) 函数
void get_mu(int n)
{
mu[1]=1;
for(int i=2;i<=n;i++)
{
if(!vis[i]){prim[++cnt]=i;mu[i]=-1;}
for(int j=1;j<=cnt&&prim[j]*i<=n;j++)
{
vis[prim[j]*i]=1;
if(i%prim[j]==0)break;
else mu[i*prim[j]]=-mu[i];
}
}
}
莫比乌斯反演
定理:\(F(n)\) 和 \(f(n)\) 是定义在非负整数集合上的两个函数,并且满足条件:\(F(n)=\sum_{d|n}f(d)\)
那么存在一个结论:\(f(n)=\sum_{d|n}\mu(d)F(\lfloor \frac nd \rfloor)\)
即莫比乌斯反演定理
我们可以通过定义证明它:
这里面用到了这样一个引理
考虑乱证一波,只需证明对于每一个 \(g(j)\) 我都能够取到 \(\sum_{i|\frac nj}f(i)\) 即可
显然等式的右边可以轻松满足,对于左边的式子而言,我们知道:\(j|\frac xi\Rightarrow ij|x\Rightarrow i|\frac xj\)
而由于我们枚举了所有的 \(i|n\) ,所以必定可以覆盖所有的 \(i|\frac xj\)
它的另外一种形式是:当 \(F(n)\) 和 \(f(n)\) 满足:\(F(n)=\sum_{n|d}f(d)\)
可以推出:\(f(n)=\sum_{n|d}\mu(\frac dn)F(d)\)
感觉这个式子,可能在莫比乌斯反演中更加好用。