题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
#include <stdio.h>
int main(){
int n,i;
while(scanf("%d",&n)!=EOF){
printf("%d = ",n);
for(i=2;i<=n;i++){
while(n!=0){
if(n%i==0){
n = n/i;
if(n/i==0){
printf("%d ",i);
}else{
printf("%d * ",i);
}
}else{
break;
}
}
}
}
return 0;
}
递归实现:
//递归解决质因数分解问题
#include <stdio.h>
#include <math.h>
int n;
void fun(int c,int n){
int i;
if(n==1||n==0)
return;
for(i=2;i<=c;i++){
if(n%i==0){
if(n/i==1)
printf("%d",i);
else
printf("%d*",i);
fun(c,n/i);
break;
}
}
}
int main(){
while(scanf("%d",&n)!=EOF){
printf("%d=",n);
fun(n,n);
}
return 0;
}