正约数之和
题目:
我们把f(i)表示为i的正约数的和,而我们要求的是1<=i<=n之间所有i的f(i)之和!
输入
先输入一个正整数T,表示T个这是数据。T(T<=50)
每行输入一个正整数n。(n<10^6)
输出
输出一个数字,表示所求的数。
样例输入
3
5
12
2018
样例输出
21
127
3350309
代码:
# include
# include int a[1300001];int main(void)
{int i, j;for (i = 1; i <= 7000000; i ++){for (j = i; j <= 1300000; j = j+i){a[j] += i;}}int t, n;long long sum;scanf("%d", &t);while (t --){sum = 0;scanf("%d", &n);for (i = 1; i <= n; i ++)sum += a[i];printf("%lld\n", sum);}return 0;
} 解题思路:用的是筛选法。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
