uva 10791

时间:2023-03-09 18:27:04
uva 10791

还算比较水的一个数学题 求因子的最小和  总是用小的数去除   注意特判  是用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;
}