写一个递归求最小公倍数的代码,用c语言
时间: 2024-09-11 12:10:35 浏览: 49
C语言实现最大公约数和最小公倍数算法
在C语言中,要使用递归求解最小公倍数(Least Common Multiple, LCM),我们通常会结合最大公约数(Greatest Common Divisor, GCD)的递归算法来实现。最小公倍数可以通过两个数的乘积除以它们的最大公约数来得到。以下是一个简单的C语言示例代码,使用辗转相除法来求最大公约数,并计算最小公倍数:
```c
#include <stdio.h>
// 函数原型声明
int gcd(int a, int b);
int lcm(int a, int b);
int main() {
int num1, num2;
// 输入两个正整数
printf("请输入两个正整数:");
scanf("%d %d", &num1, &num2);
// 计算最小公倍数
int result = lcm(num1, num2);
printf("%d 和 %d 的最小公倍数是:%d\n", num1, num2, result);
return 0;
}
// 递归函数计算最大公约数(GCD)
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
// 计算最小公倍数(LCM)
int lcm(int a, int b) {
return (a / gcd(a, b)) * b; // 先除后乘防止溢出
}
```
在这段代码中,`gcd` 函数通过递归的方式求解两个数的最大公约数。然后在 `lcm` 函数中,我们先计算两数除以它们最大公约数的商,再将其中一个数乘以这个商,得到的就是最小公倍数。
阅读全文