莫比乌斯反演

· · 个人记录

前言

本文章中所有出现的 [n=1] 表示只有 n=1时, [n=1]1 ,否则为 0

## 狄利克雷卷积 ### 引出: 我们都知道卷积的算式: $C(n)= \sum\limits_{i \oplus j = n} A(i) \times B(j)

如果 “ \oplus ”为加号,就是加法卷积,我们可以用 FFTNTT 等算法来快速实现加法卷积。

那么现在我们令“ \oplus ”为乘号,它就成了乘法卷积。

C(n)= \sum\limits_{i \times j = n} A(i) \times B(j) \Leftrightarrow C(n)= \sum\limits_{i\mid n} A(i) \times B(\tfrac{n}{i})

上面这个就是狄利克雷卷积。

我们一般简写成: C= A * B,“*” 代表以上的运算。

它满足交换律:A * B = B * A

结合律:(A * B) * C = A * (B * C)

分配律:(A + B) * C = A * C + B * C

单位元:

我们有一个叫单位元的东西,单位元叫 \epsilon

对于任意一个数论函数 f , 都有 \epsilon * f = f

而单位元的求法为 \epsilon(n)=[n=1]= \begin{cases}1\quad n=1\\0\quad n>1\end{cases}

逆元:

每一个数论函数都存在它的逆元。

现在有两个数论函数 fggf 的逆元,则有:f*g=\epsilon

求一个函数的逆:g(n)=\tfrac{1}{f(1)}\left([n=1]-\sum\limits_{i\mid n,i\ne1}f(i)g(\tfrac{n}{i})\right)

积性函数:

积性函数:当n \perp m时:

f(n\times m)=f(n)\times f(m)

常见积性函数:id\mu\phi\sigma

$\sigma_0(n)$ 函数就是求 $n$ 的因数个数。 $\phi(n)$ 函数就是求与 $n$ 互质的个数。 为什么要这么强调积性函数呢?因为这种函数可以通过线性筛来快速求解得到。 ### 莫比乌斯反演: 我们定义 $1$ 的逆为 $\mu$ 。 定义:$1 * \mu = \epsilon$。 $1$ 的逆元为 $\mu$ 。 设一个函数 $f$ , $f(n)=1$ 。 $\epsilon(n)=[n=1]=\sum\limits_{d\mid n}\mu(d)\times f(\tfrac{n}{d})=\sum\limits_{d\mid n}\mu(d)\times 1=\sum\limits_{d\mid n}\mu(d)

现在有两个数论函数 fg ,满足 f * 1 = g ,那么有 g * \mu = f

则有: f(n) = \sum\limits_{i \mid n} g(i) \times \mu(\tfrac{n}{i}) 。(莫比乌斯反演结论)

$\mu(n) = \begin{cases} (-1)^{t}\quad n = p_1p_2p_3...p_t且p_i互不相同。\\ 0\quad n不符合上述条件。\end{cases}

例题

例一

求:\sum\limits_{i=1}^n\sum\limits_{j=1}^m[gcd(i,j)=1]\quad(n<m)

\Leftrightarrow\sum\limits_{i=1}^n\sum\limits_{j=1}^m\sum\limits_{d\mid gcd(i,j)}\mu(d)

因为 d \mid gcd(i,j) 所以 d\mid id\mid j ,因此 ij 必须得是 d 的倍数,然后把 d 提前。

得:

\Leftrightarrow \sum\limits_{d=1}^n\mu(d)\times \left\lfloor\tfrac{n}{d}\right\rfloor\times \left\lfloor\tfrac{m}{d}\right\rfloor

首先 \mu 可以用线性筛求出,然后式子前面一部分可以用前缀和实现,可以用后面一部分可以通过分块思想实现。

时间复杂度:O(n)

例二

求:\sum\limits_{i=1}^n \sum\limits_{j=1}^m [gcd(i,j)=k]

我们发现与例一相比,例二的 gcd(i,j) 的数不再是 1 ,但是如果满足 gcd(i,j)=k 的话,必有 k \mid i k \mid j ,那么我们可以让他们同除 k ,得到例一的式子。

\sum\limits_{i=1}^{\left\lfloor \tfrac{n}{k} \right\rfloor} \sum\limits_{j=1}^{\left\lfloor \tfrac{m}{k} \right\rfloor} [gcd(i,j)=1] \sum\limits_{i=1}^{\left\lfloor \tfrac{n}{k} \right\rfloor} \sum\limits_{j=1}^{\left\lfloor \tfrac{m}{k} \right\rfloor} \sum\limits_{d \mid gcd(i,j)}\mu(d) \sum\limits_{d=1}^{\left\lfloor \tfrac{n}{k} \right\rfloor}\mu(d) \times {\left\lfloor \tfrac{n}{kd} \right\rfloor} \times {\left\lfloor \tfrac{m}{kd} \right\rfloor}

例三

求:\sum\limits_{i=1}^n\sum\limits_{j=1}^m[gcd(i,j)为素数]

例三我们现在的 gcd(i,j) 要求是为素数,我们可以枚举 k ,这样问题就转化成了例二。

\Leftrightarrow \sum\limits_{k=1}^n\sum\limits_{i=1}^n\sum\limits_{j=1}^m[gcd(i,j)=k]\quad k为素数 \Leftrightarrow \sum\limits_{k=1}^n\sum\limits_{i=1}^{\left\lfloor\tfrac{n}{k}\right\rfloor}\sum\limits_{j=1}^{\left\lfloor\tfrac{m}{k}\right\rfloor}[gcd(i,j)=1]\quad k为素数 \Leftrightarrow \sum\limits_{k=1}^n\sum\limits_{i=1}^{\left\lfloor\tfrac{n}{k}\right\rfloor}\sum\limits_{j=1}^{\left\lfloor\tfrac{m}{k}\right\rfloor}\sum\limits_{d\mid gcd(i,j)}\mu(d)\quad k为素数 \Leftrightarrow \sum\limits_{k=1}^n \sum\limits_{d=1}^{\left\lfloor\tfrac{n}{k}\right\rfloor} \mu(d)\times \left\lfloor\tfrac{n}{kd}\right\rfloor \times \left\lfloor\tfrac{m}{kd}\right\rfloor\quad k为素数

如果你觉得这样子就是最简了,直接就枚举k,感觉可以,但是会超时。所以我们要继续对这个式子进行优化。我们设 T=kd ,得:

\Leftrightarrow \sum\limits_{k=1}^n \sum\limits_{dk=1}^n \mu(d)\times \left\lfloor\tfrac{n}{kd}\right\rfloor\times \left\lfloor\tfrac{m}{kd}\right\rfloor\quad k为素数 \Leftrightarrow \sum\limits_{T=1}^n \sum\limits_{d\mid T}\mu(\tfrac{T}{d}) \times \left\lfloor\tfrac{n}{T}\right\rfloor\times \left\lfloor\tfrac{m}{T}\right\rfloor \quad d为素数

然后 \sum\limits_{d \mid T} \mu(\tfrac{T}{d}) 也可以在线性筛中求解,只要枚举每一个素数,然后把所有可以整除它的都加上就行了。

例四

\sum\limits_{i=1}^n \sum\limits_{j=1}^n i \times j \times gcd(i,j)

老套路,我们枚举 k

\sum\limits_{k=1}^n\sum\limits_{i=1}^n \sum\limits_{j=1}^n i \times j \times k \times [gcd(i,j)=k]

这次同除 k 就要注意了,由于我们除 k 之后, ij 都变小了,所以我们必须再乘回来。

\sum\limits_{k=1}^n\sum\limits_{i=1}^{\left\lfloor \tfrac{n}{k} \right\rfloor} \sum\limits_{j=1}^{\left\lfloor \tfrac{n}{k} \right\rfloor} i \times j \times k^3 \times [gcd(i,j)=1] \sum\limits_{k=1}^n\sum\limits_{i=1}^{\left\lfloor \tfrac{n}{k} \right\rfloor} \sum\limits_{j=1}^{\left\lfloor \tfrac{n}{k} \right\rfloor} i \times j \times k^3 \times \sum\limits_{d\mid gcd(i,j)}\mu(d) \sum\limits_{k=1}^n \sum\limits_{d=1}^{\left\lfloor \tfrac{n}{k} \right\rfloor}\mu(d) \times \sum\limits_{i=1}^{\left\lfloor \tfrac{n}{kd} \right\rfloor} \sum\limits_{j=1}^{\left\lfloor \tfrac{n}{kd} \right\rfloor} i \times j \times k^3 \times d^2 \sum\limits_{k=1}^n k^3 \times \sum\limits_{d=1}^{\left\lfloor \tfrac{n}{k} \right\rfloor}\mu(d) \times d^2 \times \sum\limits_{i=1}^{\left\lfloor \tfrac{n}{kd} \right\rfloor} \sum\limits_{j=1}^{\left\lfloor \tfrac{n}{kd} \right\rfloor} i \times j

T = kd

\sum\limits_{T=1}^n \sum\limits_{d\mid T}\mu(\tfrac{T}{d}) \times d \times T^2 \times \sum\limits_{i=1}^{\left\lfloor \tfrac{n}{T} \right\rfloor}i \sum\limits_{j=1}^{\left\lfloor \tfrac{n}{T} \right\rfloor}j \sum\limits_{T=1}^n T^2 \times \sum\limits_{d\mid T}\mu(\tfrac{T}{d}) \times d \times \left( \sum\limits_{i=1}^{\left\lfloor \tfrac{n}{T} \right\rfloor}i \right)^2

因为我们有 id * \mu = \phi ,所以 \phi(n) = \sum\limits_{i\mid n}\mu(\tfrac{n}{i}) \times i

\sum\limits_{T=1}^n T^2 \times \phi(T) \times \left( \sum\limits_{i=1}^{\left\lfloor \tfrac{n}{T} \right\rfloor}i \right)^2 ### 例五 求:$\sum\limits_{i1=L}^R\sum\limits_{i2=L}^R...\sum\limits_{in=L}^R[gcd(i1,i2...in)=K]

按照之前的套路。

\sum\limits_{i1=\left\lfloor\tfrac{L-1}{K}\right\rfloor+1}^{\left\lfloor\tfrac{R}{K}\right\rfloor}\sum\limits_{i2=\left\lfloor\tfrac{L-1}{K}\right\rfloor+1}^{\left\lfloor\tfrac{R}{K}\right\rfloor}...\sum\limits_{in=\left\lfloor\tfrac{L-1}{K}\right\rfloor+1}^{\left\lfloor\tfrac{R}{K}\right\rfloor}[gcd(i1,i2...in)=1] \sum\limits_{i1=\left\lfloor\tfrac{L-1}{K}\right\rfloor+1}^{\left\lfloor\tfrac{R}{K}\right\rfloor}\sum\limits_{i2=\left\lfloor\tfrac{L-1}{K}\right\rfloor+1}^{\left\lfloor\tfrac{R}{K}\right\rfloor}...\sum\limits_{in=\left\lfloor\tfrac{L-1}{K}\right\rfloor+1}^{\left\lfloor\tfrac{R}{K}\right\rfloor}\sum\limits_{d\mid gcd(i1,i2...in)}\mu(d) \sum\limits_{d=1}^{\left\lfloor\tfrac{R}{K}\right\rfloor}\mu(d)\times \left\lfloor\tfrac{\left\lfloor\tfrac{R}{K}\right\rfloor-\left\lfloor\tfrac{L-1}{K}\right\rfloor-1}{d}\right\rfloor^n

Y=\left\lfloor\tfrac{R}{K}\right\rfloorX = \left\lfloor\tfrac{L-1}{K}\right\rfloor + 1

\sum\limits_{d=1}^{\left\lfloor\tfrac{R}{K}\right\rfloor}\mu(d)\times \left\lfloor\tfrac{Y - X}{d}\right\rfloor^n

例六

\sum\limits_{i=1}^n \sum\limits_{j=1}^m \sigma_1(gcd(i,j))

我们可以通过枚举 kgcd(i,j) 转到外面。

\sum\limits_{k=1}^n \sum\limits_{i=1}^n \sum\limits_{j=1}^m \sigma_1(k) \times [gcd(i,j)=k] \sum\limits_{k=1}^n \sum\limits_{i=1}^{\left\lfloor \tfrac{n}{k} \right\rfloor} \sum\limits_{j=1}^{\left\lfloor \tfrac{m}{k} \right\rfloor} \sigma_1(k) \times [gcd(i,j)=1] \sum\limits_{k=1}^n \sum\limits_{i=1}^{\left\lfloor \tfrac{n}{k} \right\rfloor} \sum\limits_{j=1}^{\left\lfloor \tfrac{m}{k} \right\rfloor} \sigma_1(k) \times \sum\limits_{d\mid gcd(i,j)}\mu(d) \sum\limits_{k=1}^n \sigma_1(k) \times \sum\limits_{d=1}^{\left\lfloor \tfrac{n}{k} \right\rfloor}\mu(d) \times \left\lfloor \tfrac{n}{kd} \right\rfloor \times \left\lfloor \tfrac{m}{kd} \right\rfloor

T=kd

\sum\limits_{T=1}^{n} \left\lfloor \tfrac{n}{T} \right\rfloor \times \left\lfloor \tfrac{m}{T} \right\rfloor \times \sum\limits_{d\mid T}\sigma_1(d) \times \mu(\left\lfloor \tfrac{T}{d} \right\rfloor) ### 例七 $\sum\limits_{i=1}^n \sum\limits_{j=1}^n gcd(A_i,A_j)

乍一看,我们发现我们对 AiAj 无从下手,我们希望把 gcd 里面的东西变成我们可以控制的。我们可以用 B 来统计 A 出现的次数, MAXA 表示 A 中最大的数的值,这样一来, gcd 里面的东西就是我们可以控制的 ij 了。

\sum\limits_{i=1}^{MAXA} \sum\limits_{j=1}^{MAXA} gcd(i,j) \times B_i \times B_j \sum\limits_{k=1}^{MAXA} \sum\limits_{i=1}^{MAXA} \sum\limits_{j=1}^{MAXA} [gcd(i,j)=k] \times B_i \times B_j \sum\limits_{k=1}^{MAXA} \sum\limits_{i=1}^{\left\lfloor \tfrac{MAXA}{k} \right\rfloor} \sum\limits_{j=1}^{\left\lfloor \tfrac{MAXA}{k} \right\rfloor} [gcd(i,j)=1] \times B_{ik} \times B_{jk} \sum\limits_{k=1}^{MAXA} \sum\limits_{i=1}^{\left\lfloor \tfrac{MAXA}{k} \right\rfloor} \sum\limits_{j=1}^{\left\lfloor \tfrac{MAXA}{k} \right\rfloor} \sum\limits_{d\mid gcd(i,j)}\mu(d) \times B_{ik} \times B_{jk} \sum\limits_{k=1}^{MAXA} \sum\limits_{d=1}^{\left\lfloor \tfrac{MAXA}{k} \right\rfloor} \mu(d) \times \sum\limits_{i=1}^{\left\lfloor \tfrac{MAXA}{kd} \right\rfloor} \sum\limits_{j=1}^{\left\lfloor \tfrac{MAXA}{kd} \right\rfloor} B_{ikd} \times B_{jkd}

T=kd

\sum\limits_{k=1}^{MAXA} \sum\limits_{dk=1}^{MAXA} \mu(d) \times \sum\limits_{i=1}^{\left\lfloor \tfrac{MAXA}{kd} \right\rfloor} \sum\limits_{j=1}^{\left\lfloor \tfrac{MAXA}{kd} \right\rfloor} B_{ikd} \times B_{jkd} \sum\limits_{T = 1}^{MAXA} \sum\limits_{d \mid T} \mu(d) \times \sum\limits_{i=1}^{\left\lfloor \tfrac{MAXA}{T} \right\rfloor} \sum\limits_{j=1}^{\left\lfloor \tfrac{MAXA}{T} \right\rfloor} B_{iT} \times B_{jT} \sum\limits_{T = 1}^{MAXA} \sum\limits_{d \mid T} \mu(d) \times \left( \sum\limits_{i=1}^{\left\lfloor \tfrac{MAXA}{T} \right\rfloor} B_{iT} \right)^2