/*
如果n是素数 答案必为 n+1
如果不是素数 则需进行质因数分解 如 16 = 2*2*2*2 答案则为2+2+2+2
12 = 2*2*3 答案为2+2+3
*/
#include<cstdio>
#include<cstring>#include<cmath>
long long n;
long long solve()
{
long long ans=0;
long long cnt=0,temp=n,t;
int m = int(sqrt(n)+0.5);
for(int i = 2; i <= m; i++)
{
if(temp%i==0)
{
t = 1;
while(temp%i==0)
{
t*=i;
temp/=i;
}
ans += t;
cnt++;
}
}
if(temp==n) return n+1;
if(temp!=1) return ans+temp;
if(cnt==1) ans++;
return ans;
}
int main()
{
int count=1;
while(scanf("%lld",&n)&&n)
{
printf("Case %d: %lld\n",count++,solve());
}
return 0;
}

2217

被折叠的 条评论
为什么被折叠?



