C语言求最小公倍数最大公约数
时间: 2024-08-13 11:09:43 浏览: 49
在C语言中,计算两个整数的最大公约数(Greatest Common Divisor, GCD)和最小公倍数(Least Common Multiple, LCM)通常使用欧几里得算法(也称为辗转相除法)和公式:
**最大公约数(GCD)**:
- 如果a >= b,那么gcd(a, b) = gcd(b, a % b)
- 否则,gcd(a, b) = gcd(b, a)
**欧几里得算法示例(C代码)**:
```c
#include <stdio.h>
// 使用递归计算GCD
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
int main() {
int num1, num2;
printf("请输入两个数字:");
scanf("%d %d", &num1, &num2);
int result = gcd(num1, num2);
printf("两数的最大公约数为:%d\n", result);
return 0;
}
```
**最小公倍数(LCM)**:
一旦我们知道了GCD,可以通过以下公式计算LCM:
- lcm(a, b) = |a * b| / gcd(a, b)
**LCM示例(C代码扩展)**:
```c
// 计算LCM
int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
int main() {
// ... 前面已经读取了num1和num2
int lcm_value = lcm(num1, num2);
printf("两数的最小公倍数为:%d\n", lcm_value);
return 0;
}
```
阅读全文