$$
\begin {array} {c}
& \displaystyle \sum _ {i = 1} ^ n lcm (i, n) \\
\Longrightarrow & \displaystyle \sum _ {i = 1} ^ n \frac {in}{(i, n)} \\
\Longrightarrow & \displaystyle n\sum _ {i = 1} ^ n \frac i {(i, n)} \\
\Longrightarrow & \displaystyle n\sum _ {d | n} \sum _ {i = 1} ^ n \frac i d [(i, n) = d] \\
\Longrightarrow & \displaystyle n\sum _ {d | n} \sum _ {i = 1} ^ n \frac i d [(\frac i d, \frac n d) = 1] \\
\Longrightarrow & \displaystyle n\sum _ {d | n} \sum _ {i = 1} ^ {\frac n d} i [(i, \frac n d) = 1] \\
\Longrightarrow & \displaystyle n\sum _ {d | n} \sum _ {i = 1} ^ d i [(i, d) = 1] \\
\Longrightarrow & \displaystyle n\sum _ {d | n} \sigma (d) \\
\end {array}
$$
注意到 $\forall d > 1, \sigma (d) = \frac {d \varphi(d)} 2$ ,可以枚举 $d$ 在 $O(\sqrt n)$ 时间内回答。
但是不够优。
记 $f (n) = \displaystyle \sum _ {d | n} \sigma (d)$ ,显然 $f$ 是一个积性函数,可以筛。
对于质数 $n$ ,
$$
f(n) = \sigma (1) + \sigma(n) = 1 + (1 + 2 + \ldots n - 1) = 1 + n(n - 1)
$$
对于质数的若干次幂,
$$
f (n) = \sigma(1) + \sigma(p) + \ldots + \sigma (p ^ k) = f (\frac n p) + \sigma (p ^ k)
$$
其中,
$$
\begin {aligned}
\sigma (p ^ k) &= (1 + 2 + \ldots + p ^ k) - (p + 2p + \ldots + p ^ k) \\
&= \frac {p ^ k(p ^ k + 1)} 2 - p \frac {p ^ {k - 1} (p ^ {k - 1} + 1)} 2 \\
&= \frac {p ^ {2k} - p ^ {2k - 1}} 2 \\
\end {aligned}
$$
那么
$$
\sigma (p ^ {k - 1}) = \frac {p ^ {2k - 2} - p ^ {2k - 3}} 2
$$
有
$$
\sigma (p ^ k) = p ^ 2 \sigma (p ^ {k - 1})
$$
所以
$$
f(n) = f(\frac n p) + p ^ 2 (f(\frac n p) - f(\frac n {p ^ 2}))
$$
这样就可以做线性筛了。
查看代码
1 |
|