\(g(n) = \sum\limits_{d\mid n} f(d)\) 的狄利克雷前缀和形式相当常见 , 因此根据 \(g\) 求原函数 \(f\) 也很重要 。因为 \(g = f * 1\) , 所以 \(f = g * 1 ^ {-1}\) 。
设 \(h = 1 ^ {-1}\) , 根据逆元递推式推导 \(h\) 的一般形式 。先将递推式写出 , \(h(n) = -\sum\limits_{d\mid n, d\neq n} h(d)\) 。
由于积性函数的逆元具有积性 , 所以 \(h\) 具有积性 。只需观察 \(h\) 在质数幂 \(p ^ k\) 处的取值即可得到一般化的结论 。
- \(h(p) = -h(1) = -1\) 。
- \(h(p ^ 2) = -(h(1) + h(p)) = 0\) 。
- \(h(p ^ 3) = -(h(1) + h(p) + h(p ^ 2)) = 0\) 。
考虑 \(n = \prod\limits_{i = 1} ^ m p_i ^ {c_i}\) 。根据 \(h\) 的积性 , 若存在 \(c_i\geq 2\) 则 \(h(n) = 0\) , 否则 \(h(n)\) 等于 \((-1) ^ m\) 。容易发现这与莫比乌斯函数的定义式相符 。因此 \(1 ^ {-1} = \mu\) , 即
\[\mu * 1 = \epsilon\]验证:令 \(S(n) = \sum\limits_{d\mid n} \mu(d)\) 。考虑 \(n\) 的所有质因子 \(p_1 \sim p_m\) 。对于任意 \(k\) 个质因子的乘积 \(P\) , 它产生 \(\mu(P) = (-1) ^ k\) 的贡献 。因此 , \(S(n)\) 可写作 \(\sum\limits_{i = 0} ^ m (-1) ^ i\dbinom m i = (1 - 1) ^ m\) 。当 \(m = 0\) 时 , \(n = 1\) , \(S(n)\) 显然为 \(1\) 。否则 \(S(n) = 0 ^ m = 0\) 。这从另一个角度说明了 \(\mu * 1 = \epsilon\) 。
也可以从容斥系数的角度理解莫比乌斯函数 。设 \(g(n) = \sum\limits_{n\mid d} f(d)\) , 即 \(g(n)\) 是 \(f\) 在所有 \(n\) 的倍数处的取值和 。现在已知 \(g\) , 要求 \(f(1)\) 。则 \(f(1)\) 等于 \(f\) 在 \(1\) 的倍数处的取值和 , 减去在质数处的取值和 , 但是多减去了在两个不同质数乘积处的取值和 , 因此要加上这些值 , 但是多加上了在三个不同质数乘积处的取值和 , 以此类推 。因此 , 若 \(n\) 为 \(k\) 个不同质数的乘积 , 则 \(f(1)\) 会受到 \(g(n)\) 系数为 \((-1) ^ k\) 的贡献 , 如下图 , 图源 。

文章插图
换言之 , 对 \(\pmb {\mathbb N}\) 做容斥原理 , 得到贡献系数 \(\boldsymbol \mu\) 。
5.2 筛据定义 , 线性筛莫比乌斯反演是容易的 。
int vis[N], cnt, pr[N], mu[N];void sieve() {mu[1] = 1;for(int i = 2; i < N; i++) {if(!vis[i]) pr[++cnt] = i, mu[i] = -1;for(int j = 1; j <= cnt && i * pr[j] < N; j++) {vis[i * pr[j]] = 1;if(i % pr[j] == 0) break; // 此时 i * pr[j] 含至少两个 pr[j] , mu = 0mu[i * pr[j]] = -mu[i]; // mu[i * pr[j]] = mu[i] * mu[pr[j]] = -mu[i]}}}当时间复杂度可接受时 , 根据 \(\mu\) 的狄利克雷卷积求逆式 \(\mathcal{O}(n\log n)\) 递推更方便 。int mu[N];void sieve() {mu[1] = 1;for(int i = 1; i < N; i++)for(int j = i + i; j < N; j += i)mu[j] -= mu[i];}5.3 莫比乌斯反演\(\mu * 1 = \epsilon\) 引出了 \(\mu\) 的关键性质:\([n = 1] = \epsilon(n) = \sum\limits_{d\mid n} \mu(d)\) 。这使得我们可以用 \(\mu\) 的和式代替形如 \([n = 1]\) 的艾佛森括号 , 体现出其核心 “反演” 。- 用和式代替判断式往往重要但不直观 , 所以初学者难以理解 OI 常见反演技巧 。例如 , 对于奇质数 \(p\) 有 \(\sum\limits_{x = 1} ^ {p - 1} [x ^ 2 = a] = \left(\dfrac a p\right) + 1 = (a ^ {\frac{p - 1} 2} \bmod p) + 1\);单位根反演 \([n\mid a] = \dfrac 1 n\sum\limits_{i = 0} ^ {n - 1} \omega_n ^ {ia}\) 。从判断式到和式的过程形成套路 , 深入了解其背后的逻辑有助于读者掌握并熟练运用这种套路 。
经验总结扩展阅读
- 为什么有些人会孤立认真学习的人
- 苹果ipad分屏功能怎么使用(ipad 9可以分屏学习吗)
- 前端程序员学习 Golang gin 框架实战笔记之一开始玩 gin
- 1 Libgdx游戏学习——环境配置及demo运行
- Go设计模式学习准备——下载bilibili合集视频
- 学习ASP.NET Core Blazor编程系列五——列表页面
- 小学生的学习动机是什么
- 七 Netty 学习:NioEventLoop 对应线程的创建和启动源码说明
- ZCTF note3:一种新解法
- 关于环境学习生活类的名言急
