# The Last Practice

### Problem Description

Tomorrow is contest day, Are you all ready?
We have been training for 45 days, and all guys must be tired.But , you are so lucky comparing with many excellent boys who have no chance to attend the Province-Final.

Now, your task is relaxing yourself and making the last practice. I guess that at least there are 2 problems which are easier than this problem.
what does this problem describe?
Give you a positive integer, please split it to some prime numbers, and you can got it through sample input and sample output.

### Input

Input file contains multiple test case, each case consists of a positive integer n(1<n<65536), one per line. a negative terminates the input, and it should not to be processed.

### Output

For each test case you should output its factor as sample output (prime factor must come forth ascending ), there is a blank line between outputs.

### Sample Input

60
12
-1

### Sample Output

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>


lcy

### Source

AC代码：
#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;
}

• 评论

• 上一篇
• 下一篇