题目描述
我们把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<cstdio>
int main()
{
int t;
scanf("%d",&t);
while(t--){
long long n;
long long ans = 0;
scanf("%lld",&n);
for (long long i=1; i<=n; ++i)
{
ans += (n/i)*i;
}
printf("%lld\n",ans);
}
return 0;
}
本文解析了一道算法题目,该题目要求计算1到n之间所有整数的正约数之和。通过输入一个正整数n,程序将输出这个范围内所有数的正约数总和。文中提供了一个高效的C++实现方案。
3408

被折叠的 条评论
为什么被折叠?



