问题
分析
质因数分解,分解成
,其中每个
作为一个整数
注意特例: 输入 1,输出2 输入素数x,输出x+1,输入只分解出一个整数的,如8,那么输出要加1
#include <cstring>
#include <cstdio>
#include <vector>
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
typedef long long ll;
ll n;
int kase=0;
vector<int> prime;
ll solve(){
if(n==1) return 2;
ll ans=0,num=0; //结果,素数的个数
ll m=sqrt(n+0.5);
for(ll i=2;i<=m;++i){
ll t=0,t2=1;
while(n%i==0){
n/=i;
t++;
t2*=i;
}
if(t){
++num;
ans+=t2;
}
if(n==1) break;
}
if(n>1){ //剩下的质因子
++num;
ans+=n;
}
if(num<=1) ans+=1; //只有1个因子 n=1*n
return ans;
}
int main(void){
while(scanf("%lld",&n)==1 && n){
printf("Case %d: %lld\n",++kase,solve());
}
}