对于给定整数,将其因式分解,并输出质因子个数。2007清华上机题
解一:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
//素数判断
int isprime(int a){
int i;
for(i=2;i<=sqrt(a);i++){
if(0==a%i) return 0;
}
return 1;
}
int main(){
int num,i;
int count;
scanf("%d",&num);
printf("%d=",num);
if(isprime(num)){
printf("%d*1\n",num);
printf("number is %d\n",count);
}
else{
count=1;
while(num!=1){
for(i=2;i<=num;i++){
if(0==num%i){
count++;
num=num/i;
if(1==count){
printf("%d",i);
break;//break跳出,使for从2开始,可以解决12=2*3的问题是其输出为12=2*2*3
}
else {
printf("*%d",i);
break;
}
}
}
}
printf("\n");
printf("number is %d",count);
}
system("pause");
return 0;
}
解二:
#include<stdio.h>
#include<stdlib.h>
int main(){
int n,x=1;
int flag=1;
scanf("%d",&n);
printf("%d=",n);
while(n!=1){
x++;
while(n%x==0){//此处是关键,循环对从2开始进行整除,当不满足是x++
n/=x;
if(flag){
flag=0;
printf("%d",x);
}else{
printf("*%d",x);
}
}
}
printf("\n");
system("pause");
return 0;
}