分解质因子求最大公约数c语言
时间: 2023-10-26 22:16:55 浏览: 125
分解质因子是一种求解最大公约数的方法,它可以通过分解两个数的质因数,找出两个数的公共质因数,然后将这些公共质因数相乘得到最大公约数。
下面是一个用C语言实现分解质因子求最大公约数的示例代码:
```c
#include <stdio.h>
int main()
{
int a, b, i, j;
int x[100] = {0}, y[100] = {0};
int k = 0, gcd = 1;
printf("请输入两个正整数:");
scanf("%d %d", &a, &b);
// 分解质因数
for (i = 2; i <= a; i++) {
while (a % i == 0) {
a /= i;
x[k++] = i;
}
}
k = 0;
for (i = 2; i <= b; i++) {
while (b % i == 0) {
b /= i;
y[k++] = i;
}
}
// 求最大公约数
for (i = 0; i < k; i++) {
for (j = 0; j < k; j++) {
if (x[i] == y[j]) {
gcd *= x[i];
x[i] = y[j] = 1;
break;
}
}
}
printf("最大公约数为:%d\n", gcd);
return 0;
}
```
首先输入两个正整数a和b,然后分别对a和b进行质因数分解,将分解得到的质因数存储在数组x和y中。接下来,用两个循环遍历数组x和y,找出它们的公共质因数,将这些公共质因数相乘得到最大公约数。最后输出最大公约数即可。
需要注意的是,这个程序只能求解两个正整数的最大公约数,如果要求解多个数的最大公约数,需要使用更加复杂的算法。
阅读全文