用类似筛法的原理,就好啦
——代码
#include <cstdio> int n, ans; int a[1000001]; int main() { int i, j; scanf("%d", &n); for(i = 1; i <= n; i++) for(j = i; j <= n; j += i) a[j]++; for(i = 1; i <= n; i++) ans += a[i]; printf("%d ", ans); return 0; }
换一个思路,考虑每一个数对答案的贡献,发现
1 是 n / 1
2 是 n / 2
3 是 n / 3
。。。。。。
那么枚举就好了
#include <cstdio> int n, ans; int a[1000001]; int main() { int i, j; scanf("%d", &n); for(i = 1; i <= n; i++) ans += n / i; printf("%d ", ans); return 0; }