数论题

P1891

题意:\(T\) 组询问,每次求 \(\sum_{i=1}^{n} \text{lcm}(i,n)\) 的值。

思路:因为 \(\displaystyle \text{lcm}(a,b)=\frac{ab}{\gcd(a,b)}\),所以

\[\begin{aligned} \displaystyle &\sum_{i=1}^{n} \text{lcm}(i,n) \\ = &\sum_{i=1}^{n} \frac{in}{\gcd(i,n)} \\ = &n \times \sum_{i=1}^{n} \frac{i}{\gcd(i,n)} \end{aligned} \]

添个 \(\sum\):

\[\begin{aligned} \displaystyle &n \times \sum_{d|n} \sum_{i=1}^{n} \frac{i}{d}[\gcd(i,n)=d] \\ = &n \times \sum_{d|n} \sum_{i=1}^{n} \frac{i}{d}[\gcd(\frac{i}{d},\frac{n}{d})=1] \\ = &n \times \sum_{d|n} \sum_{i=1}^{\frac{n}{d}} i[\gcd(i,\frac{n}{d})=1] \end{aligned} \]

因为 \(d\)\(\frac{n}{d}\)\(n\) 的一对因数,所以可以把 \(\frac{n}{d}\) 写成 \(d\)

\[\begin{aligned} \displaystyle &n \times \sum_{d|n} \sum_{i=1}^{d} i[\gcd(i,d)=1] \end{aligned} \]

考虑计算 \(\sum_{i=1}^{d} i[\gcd(i,d)=1]\)

\(d=1\) 时答案显然为 \(1\)

\(d \ne 1\) 时,根据更相减损术有 \(\gcd(i,d)=\gcd(d-i,d)\)。这说明 \(1\)\(d\) 中每个 \(\gcd(i,d)=1\)\(i\) 都是成对出现的,每对的和为 \(d\),这种对的数量显然为 \(\frac{\varphi(d)}{2}\) 对。

所以 \(\sum_{i=1}^{d} i[\gcd(i,d)=1]=\frac{\varphi(d) \times d}{2}\)

然后就可以 \(O(n)\) 线性筛预处理,\(O(\sqrt n)\) 枚举因数计算了。

posted @ 2025-07-12 14:35  z_Sqr  阅读(9)  评论(0)    收藏  举报