Mobius 反演
前置知识:线性筛
![1]()
解决的问题
将「gcd 恰好为 XX」转化为「gcd 为 XX 的倍数」,结合整除分块做到 \(O(\sqrt{n})\)。
我们一般定义:
显然有 \(F(n)=\sum_{n|d} f(d)\),莫比乌斯反演就是解决已知 \(F(n)\),求解 \(f(n)\) 的工具。
定义
\(\mu(n)\) 是一个数论函数(定义域为 \(N^+\)),其定义如下:
\[\mu(n) =
\begin{cases}
1, & n = 1 \\
0, & \exist i \in [1,k] , p_i^2 | n \\
(-1)^k, & n = p_1 \times p_2 \times ... \times p_k
\end{cases}
\]
(\(k\) 为 \(n\) 质因子个数,第三个情形中 \(p_{1 \sim k}\) 互不相同)
实际意义:
根据容斥原理:
\[\varphi(n) = n - \sum \frac{n}{p_1} + \sum \frac{n}{p_1p_2} - ... + \sum (-1)^k \frac{n}{p_1 p_2 ... p_k}
\]
经过观察,我们发现第 \(i\) 项的系数即为 \(\mu(i)\)。
性质
- \(\mu(n)\) 为积性函数,即若 \(\gcd(a,b)=1\),则\(\mu(ab) = \mu(a) \mu(b)\)。
证明显然。这样,我们便可以使用线性筛 \(O(n)\) 求取 \(\mu(i)\) 了。
- \(\sum_{d | n} \mu(d) = [n=1]\)
证明:
首先,当 \(d\) 中具有多重因子时 \(\mu(d)=0\),故我们只考虑质因子互不相同的情形。
然后考虑计算质因子的贡献(设 \(d\) 有 \(k\) 个互不相同的质因子):
-
选 \(0\) 个质因子,贡献为 \({k \choose 0}\)。
-
选 \(1\) 个质因子,每个 \(\mu\) 为 \(1\),贡献为 \({k \choose 1}\)
-
选 \(2\) 个质因子,每个 \(\mu\) 为 \(-1\),贡献为 \(-{k \choose 2}\)
...
这样,我们可得总贡献为
\[\sum_{d | n} \mu(d) = \sum_{i=0}^{k} (-1)^i {k \choose i}
\]
利用二项式定理,可知 RHS \(= 0^k\),当且仅当 \(n=1\)(\(k=0\))时取得 \(1\),其余为 \(0\)。Q.E.D.
- \(\bold{\sum_{d | \gcd(i,j)} \mu(d) = [\gcd(i,j) = 1]}\)
上个性质的推论。极为重要
Mobius 反演
形式一:约数和型(狄利克雷卷积)
\[F(n) = \sum_{d|n} f(d)\\
\Downarrow\\
f(n) = \sum_{d|n} \mu(d) \cdot F(\frac{n}{d})
\]
形式二:倍数和型(最常用)
\[F(n) = \sum_{n|d} f(d)\\
\Downarrow\\
f(n) = \sum_{n|d} \mu(\frac{d}{n}) \cdot F(d)
\]
形式二证明:
主要思想是枚举倍数转为枚举几倍。
\[\sum_{n|d} \mu(\frac{d}{n}) \cdot F(d)\\
= \sum_{k=1}^{\infty} \mu(k) \cdot F(nk)\\
= \sum_{k=1}^{\infty} \mu(k) \sum_{nk|d} f(d)\\
= \sum_{n|d} f(d) \cdot \sum_{k | \frac{d}{n}} \mu(k)
\]
其中内层和当且仅当 \(n=1\) 时为 \(1\),其余为 \(0\),故原式 \(=f(n)\)。Q.E.D.
\(\mu(n)\) 的线性筛法
分三种情形:
-
\(i=1, \mu(i)=1\)。
-
\(\gcd(i,p)=1, \mu(i \cdot p)=\mu(i) \cdot \mu(p)\)。
-
\(\text{otherwise}, \mu(i)=0\)。
\(\varphi(n)\) 与 \(\mu(n)\) 的转化
有如下结论:
\[\sum_{d|T} d \cdot \mu(\frac{T}{d}) = \varphi(T)
\]
证明待补。
\(d(n)\) 的有关结论
备注:\(d(n)\) 表示 \(n\) 的约数个数。
\[d(ij) = \sum_{x|i} \sum_{y|j} [\gcd(x,y) = 1]
\]
证明:考虑每个质因子 \(p\) 的贡献。
对于 LHS,不妨设 \(i\) 中有 \(a\) 个 \(p\),\(j\) 中有 \(b\) 个 \(p\),则它在 \(ij\) 中的贡献即为 \(a+b+1\)(指数可以为 \(0\))。
对于 RHS,因为 \(\gcd(x,y)=1\),故 \(x,y\) 不能同时取到质因子 \(p\),讨论两种情形:
-
\(x\) 不含 \(p\),\(y\) 含 \(p^c\),\(c \in [0,b]\)。
-
\(y\) 不含 \(p\),\(x\) 含 \(p^c\),\(c \in [0,a]\)。
这两种情形之和正好是 \(a+b+1\) 种约数的选择,与 LHS 一一对应。Q.E.D.
例题选讲
第 I 类:直接使用性质三
- P2398 GCD SUM(枚举思想 & \(\gcd\) 化为 \(1\))
\[\sum_{i=1}^n \sum_{j=1}^n \gcd(i, j)\\
= \sum_{d=1}^n d \sum_{i=1}^n \sum_{j=1}^n [\gcd(i, j)=d]\\
= \sum_{d=1}^n d \sum_{i=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{n}{d} \rfloor} [\gcd(i, j)=1]\\
=\sum_{d=1}^n d \sum_{i=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{k | \gcd(i,j)} \mu(k)\\
= \sum_{d=1}^n d \sum_{k=1}^{\lfloor \frac{n}{d} \rfloor} (\lfloor \frac{n}{dk} \rfloor)^2 \mu(k)
\]
上题的答案减去 \(\sum_{i=1}^n i\)(去除 \(i=j\) 的情形)再除以 \(2\)(去除 \(i<j\) 的情形)即得。
- P3455 [POI 2007] ZAP-Queries(整除分块 & 前缀和优化 & 换元思想)
\[\sum_{i=1}^a \sum_{j=1}^b [\gcd(i, j)=d]\\
= \sum_{i=1}^{\lfloor \frac{a}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{b}{d} \rfloor} [\gcd(i, j)=1]\\
= \sum_{i=1}^{\lfloor \frac{a}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{b}{d} \rfloor} \sum_{k | \gcd(i,j)} \mu(k)\\
= \sum_{k=1}^{\min(\lfloor \frac{a}{d} \rfloor,\lfloor \frac{b}{d} \rfloor)} \lfloor \frac{a}{dk} \rfloor \lfloor \frac{b}{dk} \rfloor \mu(k)
\]
后面 \(\mu(k)\) 可以前缀和预处理,前面的两个分式即可整除分块(令 \(t = dk\))
\[\sum_{k=1}^{\min(\lfloor \frac{a}{d} \rfloor,\lfloor \frac{b}{d} \rfloor)} \lfloor \frac{a}{dk} \rfloor \lfloor \frac{b}{dk} \rfloor \\
= \sum_{t=1}^{\min(a,b)} \lfloor \frac{a}{t} \rfloor \lfloor \frac{b}{t} \rfloor
\]
即可。
第 II 类:\(\mu(n)\) 转化为 \(\varphi(n)\) / 莫反
- P5221 Product(仪仗队套路 & 贡献思想)
先把 \(\operatorname{lcm}(i,j)\) 去掉。
\[\prod_{i=1}^N \prod_{j=1}^N \frac{\operatorname{lcm}(i,j)}{\gcd(i,j)} \\
= \prod_{i=1}^N \prod_{j=1}^N \frac{i \cdot j}{gcd(i,j)^2}
\]
考虑分子。
\[\prod_{i=1}^N \prod_{j=1}^N {i \cdot j} \\
= \prod_{i=1}^N i^N \cdot \prod_{j=1}^N j^N \\
= (N!)^N \cdot (N!)^N \\
= (N!)^{2N}
\]
考虑分母。
\[\prod_{i=1}^N \prod_{j=1}^N {gcd(i,j)^2} \\
= \prod_{d=1}^N d^2 \prod_{i=1}^N \prod_{j=1}^N [gcd(i,j) = d] \\
= \prod_{d=1} d^{\sum_{i=1}^N \sum_{j=1}^N [gcd(i,j) = d]} \\
\]
考虑指数。
\[\sum_{i=1}^N \sum_{j=1}^N [gcd(i,j) = d] \\
= \sum_{i=1}^{\lfloor \frac{N}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{N}{d} \rfloor} [gcd(i,j) = 1] \\
= 2 \cdot \sum_{i=1}^{\lfloor \frac{N}{d} \rfloor} \varphi(i) - 1
\]
于是,分子可以 \(O(1)\) 计算,分母的 \(\sum \varphi(i)\) 可以 \(O(n)\) 线性筛+前缀和预处理,本题得到解决。
注意指数过大,需要用欧拉定理降幂。
- P1447 [NOI2010] 能量采集(\(\varphi(n)\) 与 \(\mu(n)\) 转化的应用)
首先抽象模型。对于 \((x,y)\)(\(x<y\)),它的贡献为 \(\gcd(x,y)+1-2 = \gcd(x,y)-1\)。
因此答案即为 \(2 \cdot \sum_{i=1}^n \sum_{j=1}^m \gcd(i,j) - n \cdot m\)(每个点额外贡献是 \(-1\),加起来就是 \(- n \cdot m\))。
考虑前面部分:
\[\sum_{i=1}^n \sum_{j=1}^m \gcd(i,j) \\
= \sum_{d=1}^{\min(n,m)} d \cdot \sum_{i=1}^n \sum_{j=1}^m [\gcd(i,j) = d] \\
= \sum_{d=1}^{\min(n,m)} d \cdot \sum_{i=1}^{\lfloor \frac{n}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{m}{d} \rfloor} \sum_{k|\gcd(i,j)} \mu(k) \\
= \sum_{d=1}^{\min(\lfloor \frac{n}{d} \rfloor,\lfloor \frac{m}{d} \rfloor)} d \cdot \sum_{k|d} \mu(k) \cdot \lfloor \frac{n}{kd} \rfloor \cdot \lfloor \frac{m}{kd} \rfloor \\
= \sum_{T=1}^{\min(n,m)} \cdot \lfloor \frac{n}{T} \rfloor \cdot \lfloor \frac{m}{T} \rfloor \sum_{d|T} \mu(\frac{T}{d}) \cdot d \\
= \sum_{T=1}^{\min(n,m)} \lfloor \frac{n}{T} \rfloor \cdot \lfloor \frac{m}{T} \rfloor \cdot \varphi(T)
\]
整除分块加预处理 \(\sum \varphi(i)\) 即可做到 \(O(n+\sqrt{n})\)。
- P3327 [SDOI2015] 约数个数和(莫反 & \(d(i)\) 结论的运用)
\[\sum_{i=1}^N \sum_{j=1}^M d(ij) \\
\sum_{i=1}^N \sum_{j=1}^M \sum_{x|i} \sum_{y|j} [\gcd(x,y) = 1] \\
\]
开始莫反。
\[f(k) = \sum_{i=1}^N \sum_{j=1}^M \sum_{x|i} \sum_{y|j} [\gcd(x,y) = k]
\]
答案即为 \(f(1)\)。考虑构造倍数形式的莫反:
\[F(k) = \sum_{k|d} f(d)
\]
易知
\[F(k) = \sum_{i=1}^N \sum_{j=1}^M \sum_{x|i} \sum_{y|j} [k|i 且 k|j] \\
F(k) = \sum_{i=1}^{\lfloor \frac{N}{k} \rfloor} \sum_{j=1}^{\lfloor \frac{M}{k} \rfloor} \lfloor \frac{N}{ik} \rfloor \lfloor \frac{M}{jk} \rfloor
\]
有逆变换:
\[f(n) = \sum_{n|d} \mu(\frac{d}{n}) \cdot F(d)
\]
代入 \(n=1\):
\[f(1) = \sum_{k=1}^{\min(N,M)} \mu(d) \cdot F(d) \\
= \sum_{d=1}^{\min(N,M)} \mu(d) \cdot \sum_{i=1}^{\lfloor \frac{N}{d} \rfloor} \sum_{j=1}^{\lfloor \frac{M}{d} \rfloor} \lfloor \frac{N}{id} \rfloor \lfloor \frac{M}{jd} \rfloor \\
= \sum_{d=1}^{\min(N,M)} \mu(d) \cdot \sum_{i=1}^{\lfloor \frac{N}{d} \rfloor} \lfloor \frac{M}{jd} \rfloor \cdot \sum_{j=1}^{\lfloor \frac{M}{d} \rfloor} \lfloor \frac{N}{id} \rfloor
\]
第一部分前缀和预处理,后两部分整除分块即可。