学习笔记《莫比乌斯反演》

定义

\[\mu(d) = \begin{cases} 1&n=1\\ (-1)^k&n=\prod_{i=1}^k p_i\\ 0&\text{otherwise} \end{cases} \]

线性求值

void sieve_mu(int n){
    mu[1] = 1;
    FL(i, 2, n){
        if(!vis[i])pri[++len] = i, mu[i] = -1;
        for(int j = 1;j <= len && pri[j] * i <= n; j++){
            vis[pri[j] * i] = 1;
            if(i % pri[j] == 0)break;
            mu[pri[j] * i] = -mu[i];
        }
    }
    FL(i, 1, n)mu[i] = mu[i - 1];
}

性质

\[\begin{aligned} &\sum_{d|n}\mu(d)=[n=1]\\ &[gcd(i,j)=1]=\sum_{d|\gcd(i,j)}\mu(d)\\ &f(n)=\sum_{d\mid n}g(n)\Rightarrow g(n) = \sum_{d\mid n}f(d)\mu(\frac nd)\\ &f(n)=\sum_{n\mid d}g(d)\Rightarrow g(n) = \sum_{n\mid d}f(d)\mu(\frac dn) \end{aligned} \]

从这里开始,默认 \(n\le m\)

Ex.1

\(\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)=1]\)

\[\begin{aligned} &\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)=1]\\ =&\sum_{i=1}^n\sum_{j=1}^m\sum_{d\mid \gcd(i, j)}\mu(d)\\ =&\sum_{d=1}^n \mu(d)\left\lfloor\frac nd\right\rfloor \left\lfloor\frac md\right\rfloor \end{aligned} \]

\(\mu(d)\) 前缀和优化,后面的整除分块即可。

如果是求 \(\sum_{i=1}^{n}\sum_{j=1}^{m}[gcd(i,j)=k]\)

这也很简单,我们把式子同时除以 \(k\),得 \(\sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{k}\rfloor}[gcd(i,j)=1]\)

然后就一样了。

Ex.2

\(\sum_{i=1}^n\sum_{j=1}^m \gcd(i, j) \in prime\)

我们假设 \(n \le m\),然后枚举 \(k \in prime\),得

\[\sum_{i=1}^nk\sum_{i=1}^n\sum_{j=1}^m[\gcd(i, j)=k]=\sum_{k=1}^n\sum_{i=1}^{\lfloor\frac nk\rfloor}\sum_{j=1}^{\lfloor\frac{m}{k}\rfloor}[gcd(i, j)=1]\\ \]

我们枚举一下 \(d = \gcd\),并提到前面。

\[=\sum_{k=1}^n\sum_{i=1}^{\lfloor\frac nk\rfloor}\sum_{j=1}^{\lfloor\frac{m}{k}\rfloor}\sum_{d\mid \gcd(i, j)}\mu(d)=\sum_{k=1}^n \sum_{d=1}^{\lfloor\frac nk\rfloor}\mu(d)\left\lfloor\frac n{dk}\right\rfloor\left\lfloor\frac m{dk}\right\rfloor\\ \]

由于 \(n\le 10^7\),枚举 \(k\) 太慢了,我们还要优化,设 \(T = dk\)

\[= \sum_{k=1}^n\sum_{d=1}^{\lfloor\frac nk\rfloor}\mu(d)\left\lfloor\frac nT\right\rfloor\left\lfloor\frac mT\right\rfloor=\sum_{T=1}^n\left\lfloor\frac nT\right\rfloor\left\lfloor\frac mT\right\rfloor\sum_{k\mid T}\mu(\frac Tk) \]

后面的预处理,前面一坨整除分块即可。

Ex.3

\(d(x)\)\(x\) 的约数个数,求 \(\sum_{i=1}^n\sum_{j=1}^m d(ij)\)

有个结论 \(d(ij) = \sum_{x\mid i}\sum_{y\mid j}[\gcd(x, y) = 1]\)

我们一个质数\(p\)\(i=i'*p^{k_1},j=j'*p^{k_2}\)

考虑 \(p\)\(d(ij)\) 的贡献,显然在 \(d\) 的因子中,\(p \in [0, k_1+k_2]\),共 \(k_1+k_2+1\)

我们只看 \(p\) 这一项,设 \(x=x'p^{k_x},y=y'p^{k_y}\)

要满足 \(\gcd(x,y)=1\),那么就有 \(\gcd(p^{k_x},p^{k_y})=1\)

\(k_x, k_y\) 有一个为 \(0\),另一个任意,共 \(k_1 + k_2 + 2\) 种,再减去重复的 \((0, 0)\)
就刚好有 \(k_1 + k_2 + 1\) 种。
证毕。

我们带入原式得:

\[\begin{aligned} &=\sum_{i=1}^n\sum_{j=1}^m\sum_{x\mid i}\sum_{y \mid j}[gcd(x,y)=1]\\ &=\sum_{i=1}^n\sum_{j=1}^m\sum_{x=1}^n\sum_{y=1}^m\sum_{d\mid gcd(x, y)}[x\mid i][y\mid j]\mu(d)\\ &=\sum_{x=1}^n\sum_{y=1}^m\sum_{d\mid gcd(x, y)}\mu(d)\sum_{i=1}^n[x\mid i]\sum_{j=1}^m[y\mid j]\\ &=\sum_{x=1}^n\sum_{y=1}^m\sum_{d\mid gcd(x, y)}\mu(d)\lfloor\frac nx\rfloor\lfloor\frac my\rfloor\\ &=\sum_{d=1}^n\mu(d)\sum_{x=1}^{\lfloor\frac nd\rfloor}\left\lfloor\frac n{dx}\right\rfloor\sum_{y=1}^{\lfloor\frac md\rfloor}\left\lfloor\frac m{dy}\right\rfloor \end{aligned} \]

Ex.4

\(\sum_{i=1}^{n}\sum_{j=1}^{m}ij[gcd(i,j)=k]\)

先同时除以 \(k\),但我们还要考虑 \(i,j\) 的变化,除 \(k\)\(i, j\) 会变为原来的 \(\dfrac 1k\),所以最后要乘上 \(k^2\)

\[\begin{aligned} &=\sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{k}\rfloor}ij[gcd(i,j)=1]k^2\\ &=\sum_{i=1}^{\lfloor\frac{n}{k}\rfloor}\sum_{j=1}^{\lfloor\frac{m}{k}\rfloor}ij\sum_{d\mid \gcd(i,j)}\mu(d)k^2\\ &=k^2\sum_{d=1}^n\mu(d)d^2\sum_{i=1}^{\lfloor\frac n{kd}\rfloor}i\sum_{j=1}^{\lfloor\frac m{kd}\rfloor}j \end{aligned} \]

最后那两项为等差数列,计算时整除分块,最终复杂度 \(O(\sqrt{n})\)

Ex.5

\(\sum_{i=1}^n\sum_{j=1}^n ijgcd(i,j)\)
我们知道 \(\sum_{d \mid n}\varphi(d) = n\),所以只要把 \(\mu\) 换成 \(\varphi\),然后正常做即可。

\[\begin{aligned} \sum_{i=1}^n\sum_{j=1}^n ij \gcd(i,j)&=\sum_{i=1}^n\sum_{j=1}^nij\sum_{d\mid \gcd(i,j)}\varphi(d)\\ &=\sum_{d=1}^n\varphi(d)\sum_{i=1}^n[d\mid i]i\sum_{j=1}^n[d\mid j]j\\ &=\sum_{d=1}^n\varphi(d)\sum_{x=1}^{\lfloor\frac{n}{d}\rfloor}xd\sum_{y=1}^{\lfloor\frac{n}{d}\rfloor}yd\\ &=\sum_{d=1}^n\varphi(d)d^2\sum_{x=1}^{\lfloor\frac{n}{d}\rfloor}x\sum_{y=1}^{\lfloor\frac{n}{d}\rfloor}y\\ \end{aligned} \]

posted @ 2025-07-30 11:04  fush's_blog  阅读(20)  评论(0)    收藏  举报