C语言,判断两个正整数m和n,求其最大公约数和最小公倍数
时间: 2024-11-30 08:20:24 浏览: 13
在C语言中,可以使用欧几里得算法(Euclidean Algorithm)来计算两个正整数m和n的最大公约数(Greatest Common Divisor, GCD),然后再根据公式`lcm(a, b) = |a * b| / gcd(a, b)`计算它们的最小公倍数(Least Common Multiple, LCM)。以下是实现这两个功能的代码片段:
```c
#include <stdio.h>
// 定义计算GCD的函数
int gcd(int m, int n) {
if (n == 0)
return m;
return gcd(n, m % n);
}
// 定义计算LCM的辅助函数
int lcm(int m, int n) {
return abs(m * n) / gcd(m, n);
}
int main() {
int m, n;
printf("请输入两个正整数m和n: ");
scanf("%d %d", &m, &n);
int result_gcd = gcd(m, n);
int result_lcm = lcm(m, n);
printf("最大公约数(GCD)是: %d\n", result_gcd);
printf("最小公倍数(LCM)是: %d\n", result_lcm);
return 0;
}
```
这段代码首先定义了递归计算GCD的`gcd`函数,然后在`main`函数中获取用户输入的m和n,计算出他们的GCD和LCM,并输出结果。
阅读全文