BZOJ1968
[AHOI2005]COMMON 约数研究
Description
科学家们在 Samuel 星球上的探险得到了丰富的能源储备,这使得空间站中大型计算机 “Samuel II” 的长时间运算成为了可能。由于在去年一年的辛苦工作取得了不错的成绩,小联被允许用 “Samuel II” 进行数学研究。
小联最近在研究和约数有关的问题,他统计每个正数$N$的约数的个数,并以$f(N)$来表示。例如$12$的约数有$1$、$2$、$3$、$4$、$6$、$12$。因此$f(12)=6$。下表给出了一些$f(N)$的取值:
$n$ | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
$f(n)$ | 1 | 2 | 2 | 3 | 2 | 4 |
现在小联希望用 “Samuel II” 来统计$f(1)$到$f(n)$的累加和$M$。
Input
只有一行一个整数$N$($0 < N < 1000000$)。
Output
只有一行输出,为整数$M$,即$f(1)$到$f(N)$的累加和。
Sample Input
3
Sample Output
5
Solution
对于$i$,它会成为$i$,$i \times 2$,…,$i \times (n / i)$的因子,它对答案的贡献为$n / i$。
Standard
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n, sum = 0;
int main() {
scanf("%d", &n);
for (int i = 1; i <= n; ++i)
sum += n / i;
printf("%d\n", sum);
return 0;
}