2904 - 【入门】计算因数和(二)

本题的答案可能会很大,必须用long long来保存答案。

如果像上题那样计算每个数的因数,然后全部加起来,总复杂度为 \mathcal{O}(n\sqrt{n}),显然过不了本题的数据范围。

考虑每个因数对答案的贡献,在 1\sim n 中拥有因数 i 的数一共有 \lfloor \frac{n}{i} \rfloor 个。所以只要 \mathcal{O}(n) 枚举每个因数 i,把贡献 \lfloor \frac{n}{i} \rfloor \times i 加到答案里即可。