莫比乌斯反演

莫比乌斯反演

一篇莫反入门不错的文章

莫比乌斯函数

定义

\(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) $

数论分块求解即可.

posted @ 2022-08-25 10:55  kroyosh  阅读(35)  评论(0)    收藏  举报