用类似筛法的原理,就好啦
——代码
#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\n", 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\n", ans);
return 0;
}