莫比乌斯反演
更新日志
2025/01/24:开工。
莫比乌斯函数
定义与性质
莫比乌斯函数,记作 \(\mu\)。
首先,我们知道一个数可以用如下方式表示:
\[d=\sum_{i=1}^k p_i^{b_i}
\]
然后 \(\mu\) 的定义为:
\[\mu(d)=\begin{cases}
1,d=1\\
0,\exist b_i\ge2\\
(-1)^k,d\ne1\land\forall b_i=1
\end{cases}
\]
不难发现它实际上就是一个容斥系数。
我们在这里给出一个莫比乌斯反演会用到的性质:
\[\forall n\in Z^*,\sum_{d\mid n}\mu(d)=[n=1]
\]
可以自己推导一下。这同样表明了 \(\mu\) 是一个质因数的容斥系数。
线性筛莫比乌斯函数
- 如果当前数是质数,根据定义,\(\mu(p)=1\)。
- 对于 \(i\cdot p\),有几种情况需要讨论:
- \(i\mid p\),那么 \(\exist b_{i\cdot p}\ge2\),\(\mu(i\cdot p)=0\)。
- \(i\nmid p\),这时候我们需要分讨是否 \(\exist b_i\ge2\),但事实上,我们可以直接 \(\mu(i\cdot p)=-\mu(i)\)。
int pcnt;
bool 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];
}
}
}
莫比乌斯反演
\(F(x)\) 与 \(f(x)\) 是定义在非负整数集上的两个函数:
\[\text{if }F(n)=\sum_{d\mid n}f(d)\\
f(n)=\sum_{d\mid n}\mu(d)F(\frac{n}{d})
\]
证明:
\[\begin{align*} &\sum_{d\mid n}\mu(d)F(\frac{n}{d})\\ =&\sum_{d\mid n}[\mu(d)\sum_{i\mid\frac{n}{d}}f(i)]\\ =&\sum_{i\mid n}[f(i)\sum_{d|\frac{n}{i}}\mu(d)]\\ =&f(n) \end{align*} \]
以及另一种形式:
\[\text{if }F(n)=\sum_{n\mid d}f(d)\\
f(n)=\sum_{n\mid d}\mu(\frac{d}{n})F(d)
\]
证明:
上面是已知 \(F\) 与其约数 \(f\) 的关系,这里已知 \(F\) 与其倍数 \(f\) 的关系,感性理解一下这两个式子其实是等价的。
可以通过下面这个式子加深记忆:(不是证明过程)\[f(n)=\sum_{k\in Z^*}\mu(k)F(nk) \]是不是感觉就和上面的第一个式子有形式相反的感觉了?
例题
有时间多补一点吧。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】