a010.
因數分解
| From: [140.115.200.5] |
發表日期
:
2010-11-10 09:51
#include<stdio.h>
#include<math.h>
int main(){
int prime_list[5000];
int prime_list_position=0;
int is_prime=0;
int num_counter=2;
int divisor=2;
while(prime_list_position<5000){
while(divisor<sqrt(num_counter)){
if(num_counter%divisor==0){
is_prime+=1;
}
else{
is_prime+=0;
}
divisor++;
}
if(is_prime==0){
prime_list[prime_list_position]=num_counter;
prime_list_position++;
}
num_counter++;
divisor=2;
is_prime=0;
}
int origin_num=0;
int num=0;
int pow=0;
while(scanf("%d",&origin_num)!=EOF){
if(origin_num!=0){
num=origin_num;
int i;
for(i=0;prime_list[i]<=origin_num;i++){
while(num%prime_list[i]==0){
num=(int)(num/prime_list[i]);
pow++;
}
if(pow==0){}
else if(pow==1){
printf("%d",prime_list[i]);
if(num!=1)
printf(" * ");
}
else{
printf("%d^%d",prime_list[i],pow);
if(num!=1)
printf(" * ");
}
pow=0;
}
printf("\n");
}
else{printf("0\n");}
}
return 0;
}