数论题
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)\) 枚举因数计算了。

浙公网安备 33010602011771号