根据GCD(x,y)=GCD(y,x-y),其中x大于y,利用这种方法,写出两个函数,分别求两个整数的最大公因数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入(C语言)
时间: 2024-10-13 13:04:55 浏览: 30
在C语言中,我们可以编写两个函数来计算两个整数的最大公因数(GCD)和最小公倍数(LCM),使用辗转相除法(欧几里得算法)以及性质 `GCD(x, y) = GCD(y, x - y)`。以下是代码实现:
```c
#include <stdio.h>
// 函数:计算最大公因数 (GCD)
int gcd(int a, int b) {
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
// 利用GCD计算最小公倍数 (LCM)
int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
// 主函数
int main() {
int num1, num2;
// 输入两个整数
printf("请输入第一个整数: ");
scanf("%d", &num1);
printf("请输入第二个整数: ");
scanf("%d", &num2);
// 调用GCD和LCM函数
int result_gcd = gcd(num1, num2);
int result_lcm = lcm(num1, num2);
// 输出结果
printf("最大公因数 (GCD): %d\n", result_gcd);
printf("最小公倍数 (LCM): %d\n", result_lcm);
return 0;
}
```
在这个程序中,`gcd` 函数通过递归或循环实现辗转相除法,计算两个数的最大公因数;而 `lcm` 函数则直接利用公式 `lcm(a, b) = (a * b) / gcd(a, b)` 计算最小公倍数。用户可以在运行 `main` 函数时输入需要计算的两个整数,程序会返回它们的最大公因数和最小公倍数。
阅读全文