题目描述
将一个正整数分解质因数,例如,输入90,输出2 3 3 5。
输入
输入一个正整数n(2<=n<=2000)。
输出
从小到大输出n的所有质因子,每两个数之间空一格。
样例输入
20
样例输出
2 2 5
提示
注意,最后一个数后面没有空格!!
tips:质因数是指因数是质数,正整数的因式分解可以将正整数表示为一连串的质因子 ,任何正整数都有独一无二的质因子分解式
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int isPrime(int num){ //判断是否是质数int i;for ( i = 2; i < num; i++){if (num%i == 0)break;}if (i==num){return 1;}else{return 0;}
}
int main(){int num, i,flag;scanf("%d",&num);while (num>1) // 20/2/2/5=1,当输入的数变为1已经输出全部质因子{for (i = 2; i < num+1; i++){if (isPrime(i)&&!(num%i)) //质数并且是因数{flag = i;break;}}num /= i;if (num==1){printf("%d",flag); //通过使用num是否为1判断是不是最后一个质因子}else{printf("%d ",flag);}}
}