输入两个正整数m和n,用C语言求它们的最大公约数和最小公倍数。
时间: 2024-10-22 17:14:51 浏览: 34
在C语言中,可以使用欧几里得算法(也叫辗转相除法)来计算两个正整数m和n的最大公约数(Greatest Common Divisor,GCD),然后再用这两个数和最大公约数来计算最小公倍数(Least Common Multiple,LCM)。以下是基本步骤:
1. **计算最大公约数(GCD)**:
- 使用递归的方式,直到其中一个数变成0,另一个数就是它们的最大公约数。如果m > n,则gcd(m, n) = gcd(n, m % n),否则gcd(m, n) = gcd(m, n % m)。
```c
int gcd(int m, int n) {
if (n == 0)
return m;
else
return gcd(n, m % n);
}
```
2. **计算最小公倍数(LCM)**:
- 最小公倍数等于两数乘积除以它们的最大公约数。即 LCM(m, n) = (m * n) / GCD(m, n)。
```c
int lcm(int m, int n) {
return (m * n) / gcd(m, n);
}
```
然后,你可以将这两个函数结合起来使用,输入m和n即可得到结果。
```c
#include <stdio.h>
int main() {
int m, n;
printf("Enter two positive integers: ");
scanf("%d %d", &m, &n);
// 计算最大公约数
int gcd_value = gcd(m, n);
// 计算最小公倍数
int lcm_value = lcm(m, n);
printf("The GCD of %d and %d is %d.\n", m, n, gcd_value);
printf("The LCM of %d and %d is %d.\n", m, n, lcm_value);
return 0;
}
阅读全文