60 12 -1
Case 1. 2 2 3 1 5 1 Case 2. 2 2 3 1 <div style=‘font-family:Times New Roman;font-size:14px;background-color:F4FBFF;border:#B7CBFF 1px dashed;padding:6px‘><div style=‘font-family:Arial;font-weight:bold;color:#7CA9ED;border-bottom:#B7CBFF 1px dashed‘><i>Hint</i></div> 60=2^2*3^1*5^1 </div>
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
using namespace std;
int i;
int fun(){
i++;
int k=2;
while(k<i){
if(i%k==0)fun();
k++;
}
return i;
}
int main(){
int n,count1=0,in=0;
while(scanf("%d",&n)&&n>0){
if(in>0)
putchar('\n');
printf("Case %d.\n",++count1);
int p[65536],count=0,out[65536];
for(i=2;i<65536&&n!=1;i=fun()){
int k=0;
while(n%i==0){
n/=i;
k++;
}
p[count]=i;
out[count++]=k;
}
for(i=0;i<count;i++)
if(out[i]!=0){
printf("%d %d ",p[i],out[i]);
}
putchar('\n');
in++;
}
return 0;
}原文:http://blog.csdn.net/zp___waj/article/details/46006783