1. 程式人生 > 其它 >最大公約數之和

最大公約數之和

本文主要講一下最大公約數的和的推導過程(因為其太過經典,其實是博主老忘)。

原式:

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

莫比烏斯反演經典入門題。

話不多說,進入正文。

\[\begin{aligned} & \sum\limits_{i = 1}^n\sum\limits_{j = 1}^ngcd(i, j) \\ =& \sum\limits_{k = 1}^nk\sum\limits_{i = 1}^n\sum\limits_{j = 1}^n[gcd(i, j) = k] \\ =& \sum\limits_{k = 1}^nk\sum\limits_{i = 1}^{ \left\lfloor\frac{n}{k}\right\rfloor}\sum\limits_{j = 1}^{ \left\lfloor\frac{n}{k}\right\rfloor}[gcd(i, j) = 1] \\ =& \sum\limits_{k = 1}^nk\sum\limits_{i = 1}^{ \left\lfloor\frac{n}{k}\right\rfloor}\sum\limits_{j = 1}^{ \left\lfloor\frac{n}{k}\right\rfloor}\epsilon(gcd(i, j)) \end{aligned} \]

根據 \(\epsilon = \mu * I\)

,即 \(\epsilon(n) = \sum\limits_{d | n}\mu(d)\),得:

\[\sum\limits_{k = 1}^nk\sum\limits_{i = 1}^{ \left\lfloor\frac{n}{k}\right\rfloor}\sum\limits_{j = 1}^{ \left\lfloor\frac{n}{k}\right\rfloor}\sum\limits_{d | (i, j)}\mu(d) \]

我們先考慮這樣一個式子如何化簡:

\[\sum\limits_{i = 1}^{ \left\lfloor\frac{n}{k}\right\rfloor}\sum\limits_{d | i}\mu(d) \]

把列舉 \(i\)

改成列舉 \(d\)\(\left\lfloor\dfrac{n}{k}\right\rfloor\) 以內是 \(d\) 的倍數的數有 \(\left\lfloor\dfrac{n}{dk}\right\rfloor\) 個,得:

\[\sum\limits_{d = 1}^{ \left\lfloor\frac{n}{k}\right\rfloor}\left\lfloor\dfrac{n}{dk}\right\rfloor\mu(d) \]

我們先列舉 \(d\),並把這個式子代入到剛才我們化簡得那個式子中去:

\[\begin{aligned} & \sum\limits_{k = 1}^nk\sum\limits_{i = 1}^{ \left\lfloor\frac{n}{k}\right\rfloor}\sum\limits_{j = 1}^{ \left\lfloor\frac{n}{k}\right\rfloor}\sum\limits_{d | (i, j)}\mu(d) \\ =& \sum\limits_{k = 1}^nk\sum\limits_{d = 1}^{ \left\lfloor\frac{n}{k}\right\rfloor}\left\lfloor\dfrac{n}{dk}\right\rfloor^2\mu(d) \end{aligned} \]

再令 \(T = dk\)

,並列舉 \(T\) (其實下面的式子和上面的式子裡 \(d\)\(k\) 反過來了,不過我懶得改了 QwQ):

\[\sum_{T = 1}^n\sum_{d \mid T}d\mu(\frac Td)\lfloor\frac nT\rfloor^2 \]

至此,就已經是一般形式了,這個可以用整除分塊快速求解。

但是,這道題還沒有完,還可以進一步轉化。

我們知道 \(\varphi = \mu * id\),正好式子裡存在!所以:

\[\sum_{T = 1}^n\varphi(T)\lfloor\frac nT\rfloor^2 \]

現在,這道題才算是真正結束了(感覺一下子式子裡啥都沒了 QwQ)

\[\_EOF\_ \]

本文來自部落格園,作者:xixike,轉載請註明原文連結:https://www.cnblogs.com/xixike/p/15713088.html