![uva 10791 uva 10791](https://image.shishitao.com:8440/aHR0cHM6Ly9ia3FzaW1nLmlrYWZhbi5jb20vdXBsb2FkL2NoYXRncHQtcy5wbmc%2FIQ%3D%3D.png?!?w=700&webp=1)
还算比较水的一个数学题 求因子的最小和 总是用小的数去除 注意特判 是用int不行哦........
#include <cstdio>
#include <cmath> int main()
{
long n, ca = 1;
while(scanf("%ld",&n) == 1 && n)
{ long k = n;
long ans = 0, flag = 0;
for(int i = 2; i <= sqrt(n); i++)
{
if(k % i == 0)
{
flag++;
int tmp = 1;
while(k % i == 0)
{
tmp *= i;
k /= i ;
}
ans += tmp;
}
}
printf("Case %ld: ",ca++);
if(!flag)
printf("%ld\n",1+n);
else
{
if(k != 1)
ans += k;
else if(flag == 1)
ans++;
printf("%ld\n",ans);
}
}
return 0;
}