使用递归方法求解整数n的质因子的步骤为:
1、找到n的最小质因子i,并将i放入集合P中;
2、n /= i;然后重复第1步,直到n本身为质数为止(即终止条件)。
用公式表示如下:
实现代码如下:
#include
#include
#define MAXPLEN 100
static int cnt = 0; /* 统计质因子总数 */
int F(int n, int *ptr);
int main()
{
int n, i;
int P[MAXPLEN];
scanf("%d", &n);
if (F(n, P)){
for (i=0; i
printf("%d\n", P[i]);
}
else
printf("input wrong.\n");
return 0;
}
int F(int n, int *ptr)
{
int i;
if (n<=1)
return 0;
else if (n==2){
*ptr++ = 2;
cnt++;
return 1;
}
for (i=2; i
if (!(n % i))
break;
}
if (n % i){
/* n是素数 */
*ptr++ = n;
cnt++;
return 1;
}
else{
/* n不是素数, 此时i肯定为最小质因子 */
*ptr++ = i;
cnt++;
return F(n/i, ptr);
}
}