莫比乌斯反演
莫比乌斯反演
一篇莫反入门不错的文章
莫比乌斯函数
定义
将 \(n\) 质因数分解
\(n = \prod_{i=1}^{k} p_i^{\alpha _i}\)
则
\(\mu (n)= \left\{\begin{matrix} 1, &n=1 \\ 0, & \exists \alpha _i>1\\ (-1)^k, & \forall \alpha _i=1 \end{matrix}\right.\)
性质
- 积性函数.
- \(s(n) = \sum_{d|n} \mu (d) =\left\{\begin{matrix}
1, & n=1\\
0, & n≠1
\end{matrix}\right.\)
即 \(s(n) = \sum_{d|n} \mu (d) = [n = 1]\)
线性筛
code
int primes[N], cnt, mu[N];
bool st[N];
void init()
{
mu[1] = 1;
for (int i = 2; i < N; i ++ )
{
if (!st[i]) primes[ ++ cnt] = i, mu[i] = -1;
for (int j = 1; j <= cnt && primes[j] * i < N; j ++ )
{
st[primes[j] * i] = true;
if (i % primes[j] == 0) break;
mu[primes[j] * i] = -mu[i];
}
}
}
莫比乌斯反演
对于一些函数 \(f(n)\),如果很难直接求出它的值,而容易求出其倍数和或约数和 \(g(n)\),那么可以通过莫比乌斯反演简化运算,求得 \(f(n)\) 的值.
定义
-
形式一:
若 \(g(n)=\sum_{d|n}f(d)\), 则 \(f(n) = \sum _{d|n} \mu (d) g(\frac{n}{d})\).
-
形式二:
若 \(g(n)= \sum _{n|d} f(d)\), 则 \(f(n) = \sum_{n|d} \mu (\frac{d}{n})g(d)\).
问题形式
P1390 公约数的和
给定 \(n \ (n≤2e6)\), 求 \(\sum_{i = 1}^{n} \sum_{j = i + 1}^{n} gcd(i, j)\).
一些无关但有用的推导
\(\sum_{i = 1}^{n} \sum_{d|i} \mu (d) = \sum_{d = 1}^{n} \left \lfloor \frac{n}{d} \right \rfloor \mu (d)\)
$\sum_{i=1}^{n} \sum_{j=1}^{m} [gcd(i,j)=1] $
$= \sum_{i=1}^{n} \sum_{j=1}^{m} \sum_{d|gcd(i, j)} \mu (d) $
$= \sum_{i=1}^{n} \sum_{j=1}^{m} \sum_{d|i} \sum_{d|j} \mu(d) $
$= \sum_{i=1}^{n} \sum_{d|i} \sum_{j=1}^{m} \sum_{d|j} \mu(d) $
$= \sum_{d=1}^{n} \left \lfloor \frac{n}{d} \right \rfloor \sum_{d=1}^{m} \left \lfloor \frac{m}{d} \right \rfloor \mu(d) $
\(= \sum_{d=1}^{min(n, m)} \mu(d) \left \lfloor \frac{n}{d} \right \rfloor \left \lfloor \frac{m}{d} \right \rfloor\)
即
\(\sum_{i=1}^{n} \sum_{j=1}^{m} [gcd(i,j)=1] = \sum_{d=1}^{min(n, m)} \mu(d) \left \lfloor \frac{n}{d} \right \rfloor \left \lfloor \frac{m}{d} \right \rfloor\)
再来看此题
求
\(\sum_{i = 1}^{n} \sum_{j = 1}^{n} gcd(i, j)\)
$= \sum_{k=1}^{n}k × \sum_{i=1}^{n} \sum_{j=1}^{m} [gcd(i,j)=k] $
\(= \sum_{k=1}^{n}k × \sum_{i=1}^{\left \lfloor \frac{n}{d} \right \rfloor} \sum_{j=1}^{\left \lfloor \frac{n}{d} \right \rfloor} [gcd(i,j)=1]\)
令
\(n'=\left \lfloor \frac{n}{d} \right \rfloor\)
结果为
\(=\sum_{k=1}^{n}k × \sum_{d=1}^{n'}\mu(d) {\left \lfloor \frac{n'}{d} \right \rfloor}^2\)
运算时需要运用数论分块和前缀和.
结果减去一些多余的即可.
[国家集训队]Crash的数字表格 / JZPTAB
给定 \(n ,m\ (n,m≤1e7)\), 求 \(\sum_{i = 1}^{n} \sum_{j = 1}^{n} lcm(i, j)\).
推导:
$\sum_{k=1}^{min(n,m)} \sum_{i=1}^{n} \sum_{j=1}^{m} \frac{i×j}{k} [gcd(i,j)=k] $
$= \sum_{k=1}^{min(n,m)} \sum_{i=1}^{\left \lfloor \frac{n}{k} \right \rfloor} \sum_{j=1}^{\left \lfloor \frac{m}{k} \right \rfloor} i×j×k\ [gcd(i,j)=1] $
$= \sum_{k=1}^{min(n,m)} \sum_{i=1}^{\left \lfloor \frac{n}{k} \right \rfloor} \sum_{j=1}^{\left \lfloor \frac{m}{k} \right \rfloor} i×j×k \sum_{d|gcd(i,j)} \mu(d) $
$= \sum_{k=1}^{min(n,m)} \sum_{d=1}^{min(\left \lfloor \frac{n}{k} \right \rfloor, \left \lfloor \frac{m}{k} \right \rfloor)} \sum_{i=1}^{\left \lfloor \frac{n}{d\ k} \right \rfloor} \sum_{j=1}^{\left \lfloor \frac{m}{d\ k} \right \rfloor} i×j×k×d^2× \mu(d) $
$= \sum_{k=1}^{min(n,m)} k×\sum_{d=1}^{min(\left \lfloor \frac{n}{k} \right \rfloor, \left \lfloor \frac{m}{k} \right \rfloor)} d^2× \mu(d) × \sum_{i=1}^{\left \lfloor \frac{n}{d\ k} \right \rfloor} \sum_{j=1}^{\left \lfloor \frac{m}{d\ k} \right \rfloor} i×j $
设
$sum(n,m) = \sum_{d=1}^{min(n,m)} d^2 × \mu(d) × \sum_{i=1}^{\left \lfloor \frac{n}{d} \right \rfloor} \sum_{i=1}^{\left \lfloor \frac{m}{d} \right \rfloor} i × j $
答案为
$\sum_{k=1}^{min(n, m)} k × sum(\left \lfloor \frac{n}{k} \right \rfloor,\left \lfloor \frac{m}{k} \right \rfloor) $
数论分块求解即可.

浙公网安备 33010602011771号