输入一个数,使用质数表对其进行因式分解。
因式分解基本上就是使用小于输入数的数值当作除数,去除以输入数值,如果可以整除就视为因数,要比较快的解法使用质数表的方法,该方法就是求出小于该数的所有质数,并试试看是不是可以整除,从而完成因式分解。
#include<stdio.h>
#include<math.h>
#define N 10000
int main() {
int num, i = 2, j, k, t = 0, prime[N];
scanf_s("%d", &num);
//求小于输入num的质数表
while (i < num) {
k = 0;
for (j = 2;j <= sqrt(i);j++) {
if (i % j == 0) k++;
}
if (k == 0) {
prime[t] = i;
t++;
}
i++;
}
//for (i = 0;i < t;i++) printf("%d ", prime[i]); //打印质数表
printf("所求质因数为:");
//从质数表里找因数
int flag = 1;
while (flag) {
for (i = 0;i < t;i++) {
if (num % prime[i] == 0) {
printf("%d ", prime[i]);
num = num / prime[i];
flag = 1;
break;
}
else flag = 0;
}
}
return 0;
}
质数表方法分解质因数
1.先求出num以内的质数并存放到prime[N]里
2.从里prime[N]里循环找出因数