题意:分解质因子的一个题,将最小公倍数分解质因子,最小的和sum便为各个质因子的相应次方数之和。
此题难点在于几个特殊的情况的处理:
(1)当N = 1时,应输出2(1*1=1,sum=1+1=2);
(2)当N是素数的时候,输出N+1(N*1=N,sum=N+1);
(3)当只有单质因子时,sum=质因子相应次方+1;
(4)当N=2147483647时,它是一个素数,此时输出2147483648,但是它超过int范围,应考虑用long long。
(5)这个题还要知道一个结论, 最后剩下的质因子个数最多为1,两个大于根号n的质因子是不存在的,证明很显然,这样这两个质因子乘积就大于n了,和题意不符合。

//
//Created by BLUEBUFF 2016/1/11
//Copyright (c) 2016 BLUEBUFF.All Rights Reserved
//

#pragma comment(linker,"/STACK:102400000,102400000")
//#include <ext/pb_ds/assoc_container.hpp>
//#include <ext/pb_ds/tree_policy.hpp>
//#include <ext/pb_ds/hash_policy.hpp>
//#include <bits/stdc++.h>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <cmath>
#include <cstdio>
#include <time.h>
#include <cstdlib>
#include <cstring>
#include <complex>
#include <sstream> //isstringstream
#include <iostream>
#include <algorithm>
using namespace std;
//using namespace __gnu_pbds;
typedef long long LL;
typedef unsigned long long uLL;
typedef pair<int, LL> pp;
#define REP1(i, a, b) for(int i = a; i < b; i++)
#define REP2(i, a, b) for(int i = a; i <= b; i++)
#define REP3(i, a, b) for(int i = a; i >= b; i--)
#define CLR(a, b) memset(a, b, sizeof(a))
#define MP(x, y) make_pair(x,y)
template <class T1, class T2>inline void getmax(T1 &a, T2 b) { if (b>a)a = b; }
template <class T1, class T2>inline void getmin(T1 &a, T2 b) { if (b<a)a = b; }
const int maxn = 270010;
const int maxm = 1e5+5;
const int maxs = 10;
const int maxp = 1e3 + 10;
const int INF  = 1e9;
const int UNF  = -1e9;
const int mod  = 1e9 + 7;
const int rev = (mod + 1) >> 1; // FWT
const double PI = acos(-1);
//head

int main()
{
    int n, ks = 0;
    while(scanf("%d", &n) != EOF)
    {
        if(n == 0) break;
        LL sum = 0;
        int m = (int)sqrt(n + 0.5);
        int bas = n, cnt = 0; //bas为当前待分解的数, cnt为质因子个数
        for(int i = 2; i <= m; i++){
            if(bas % i == 0){
                cnt++;
                int res = 1;
                while(bas % i == 0){
                    res *= i;
                    bas /= i;
                }
                sum += res;
            }
        }
        if(n == bas){
            sum = (1LL)*n + 1;
        }
        else if(cnt == 1 || bas != 1) sum += bas;
        printf("Case %d: %lld\n", ++ks, sum);
    }
    return 0;
}