uva10791

#include <iostream>

using namespace std;

int main(int argc, char *argv[])

{

 int j,k,m=0,flag;

 long long s,n,i;

 while(cin>>n)

 {

  s=0;flag=0;

  if(n==0) break; j=n;

  for(i=2;i*i<=j;i++)

  {

   k=1;

   if(n%i==0) flag++;

   while(n%i==0)

    k*=i,n/=i;

    if(k!=1) s+=k;

  }

  if(n!=1&&j!=n) s+=n;//分解出来n不为0时

  if(j==n) s+=n+1;//为素数 

  if((flag==1&&n==1)) s++;//只分解为一个素数 

  cout<<"Case "<<++m<<": "<<s<<endl;

 }

 return 0;

}


你可能感兴趣的:(uva)