谨此提醒PE的同学:题目给的Sample在最后一组数据的末尾是没有空格的,而实际要加上一个空格。
#include "stdio.h"
#include "string.h"
#include "math.h"
int prime[65536];
int count[65536];
void main(){
int i, j;
int num;
int t;
int first, firstline;
int c;
memset(prime, 0, sizeof(prime));
prime[1] = 1;
for(i=2; i<=65535; i++){
for(j=2; j<i; j++)
if(i%j == 0)
break;
if(j==i){
prime[i] = 1;
}
}
c = 1;
freopen("in.txt", "r", stdin);
firstline = 1;
while(scanf("%d", &num), num>0){
memset(count, 0, sizeof(count));
t = num;
while(!prime[num]){
for(i=2; i<=num; i++){
while(num > 2){
if(num%i == 0){
count[i]++;
num /= i;
}
else
break;
}
if(prime[num])
break;
}
}
count[num]++;
if(firstline)
firstline = 0;
else
printf("\n");
printf("Case %d.\n", c++);
num = 1;
first = 1;
for(i=2; i<=t; i++){
if(!count[i]) continue;
num *= (int)pow(i, count[i]);
// if(first)
// first = 0;
// else
// printf(" ");
printf("%d %d ", i, count[i]); //最后也要加空格
if(num == t)
break;
}
printf("\n");
}
}