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;
}


posted @ 2013-08-19 20:53  xlc2845  阅读(97)  评论(0)    收藏  举报