Description
给一个正整数n,请求n所有因子的累加和。
Input
每行一个整数n,1≤n≤100,000,000。如果n为0表示输入结束,不需要处理。
Output
每行输出一个结果。
Sample Input
1
2
3
4
0
Sample Output
1
3
4
7
解题思路:
直接按题意写即可,注意类型要满足比1e9大。
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long int n;
while(scanf("%I64d",&n) && n)
{
long long int ans=0;
for(long long int i=1; i*i<=n; i++)
{
if(n%i == 0)
{
if(i == n/i)
ans=ans+i;
else
ans=ans+i+n/i;
}
}
printf("%I64d\n",ans);
}
return 0;
}