分解质因数
【面试题】众所周知,任何一个合数都可以写成几个质数相乘的形式,这几个质数叫做这个合数的质因子,例如 24 = 2 x 2 x 2 x 3 ,对于一个质数他的质因子可以定义为他的本身。请编写一个程序实现分解质因子。
【注意】质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。
#include "stdio.h"
//判断是否是质数
int isPrime(int n) {
int i;
for (i=2; i<n; i++) {
if (n%i == 0) {
return 0;
}
}
return 1;
}
void PrimeFactor(int n)
{ /*对参数n分解质因数*/
int i;
if(isPrime(n)) {
printf("%d ",n);
} else {
for(i=2;i<=n-1;i++) {
if(n % i == 0){
printf("%d ",i); /*第一个因数一定是质因数*/
PrimeFactor(n/i); /*递归地调用PrimeFactor 分解n/i */
break;
}
}
}
}
void main() {
int value;
printf("Please input a integer for getting Prime factor\n");
scanf("%d",&value);
PrimeFactor(value);
getchar();
}