c语言求两个数的最大公因子和最小公倍数
时间: 2024-10-19 07:05:20 浏览: 22
C语言编程实现求两个数的最大公约数和最小公倍数
在C语言中,我们可以使用辗转相除法和更相减损法来求两个数的最大公因子,使用公式(a*b)/gcd(a,b)来求最小公倍数。下面是具体的步骤:
1. 辗转相除法求最大公因子:
首先,我们将输入的两个数m和n进行比较,将较大的数赋值给a,较小的数赋值给b。
然后,我们用a除以b,得到余数r,如果r等于0,则b就是最大公因子;否则,我们将b赋值给a,将r赋值给b,继续进行相除,直到r等于0为止。
最后,输出b即为最大公因子。
2. 更相减损法求最大公因子:
首先,我们将输入的两个数m和n进行比较,将较大的数赋值给a,较小的数赋值给b。
然后,我们用a减去b,得到差d,如果d等于0,则b就是最大公因子;否则,我们将b赋值为d,将a赋值为较大的数,继续进行相减,直到d等于0为止。
最后,输出b即为最大公因子。
3. 求最小公倍数:
我们可以使用公式(a*b)/gcd(a,b)来求最小公倍数,其中gcd(a,b)表示a和b的最大公因子。
首先,我们可以调用上面求最大公因子的函数,得到a和b的最大公因子。
然后,我们将a和b相乘,再除以它们的最大公因子,即可得到最小公倍数。
下面是C语言代码实现:
```
#include <stdio.h>
// 辗转相除法求最大公因子
int gcd1(int a, int b) {
int r;
while (b != 0) {
r = a % b;
a = b;
b = r;
}
return a;
}
// 更相减损法求最大公因子
int gcd2(int a, int b) {
int d;
while (a != b) {
if (a > b) {
d = a - b;
a = d;
} else {
d = b - a;
b = d;
}
}
return a;
}
// 求最小公倍数
int lcm(int a, int b) {
int gcd = gcd1(a, b);
return (a * b) / gcd;
}
int main() {
int m, n;
printf("请输入两个整数m和n(用空格分隔):");
scanf("%d %d", &m, &n);
printf("最大公因子为:%d\n", gcd1(m, n));
printf("最小公倍数为:%d\n", lcm(m, n));
return 0;
}
```
阅读全文