紫书题解:设唯一分解式:n=a1p1*a2p2…,不难发现每个aipi 作为一个单独的整数时最优。
注意点:1.n=1时 2.n本身为质数时 3.n只有一个因子时 4.n有两个因子以上时。
<自己思路不够清晰,太急于求成,写了很久,一直WA!>
<Think twice,Code once!!!
>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
ll n;
ll solve(ll n){
ll m=sqrt(n+0.5);
ll ans=0,k=0;
for(ll i=2;i<=m;i++){
if(n%i!=0)continue;
k++;
ll c=1;
while(n%i==0){
n/=i;c*=i;
}
ans+=c;
if(n==1)break;
}
if(n!=1)k++;
if(!ans)return n+1;
if(k==1)return ans+1;
return ans+(n>1?n:0);
}
int main()
{
for(int t=1;;t++){
scanf("%lld",&n);
if(!n)break;
if(n==1){printf("Case %d: 2\n",t);continue;}
printf("Case %d: %lld\n",t,solve(n));
}
return 0;
}