C语言输入两个正整数m和n,求其最大公约数和最小公倍数
时间: 2023-06-10 08:07:10 浏览: 111
输入两个正整数m和n求其最大公约数和最小公倍数.docx
5星 · 资源好评率100%
可以使用辗转相除法求最大公约数,公式为:
gcd(m, n) = gcd(n, m % n)
其中,% 表示求余数。当余数为 0 时,上式结束,此时 n 就是最大公约数。
最小公倍数可以用最大公约数求得,公式为:
lcm(m, n) = m * n / gcd(m, n)
下面是代码实现:
```c
#include <stdio.h>
// 求最大公约数
int gcd(int m, int n) {
int r = m % n;
while (r != 0) {
m = n;
n = r;
r = m % n;
}
return n;
}
// 求最小公倍数
int lcm(int m, int n) {
return m * n / gcd(m, n);
}
int main() {
int m, n;
printf("请输入两个正整数m和n:");
scanf("%d %d", &m, &n);
int GCD = gcd(m, n);
int LCM = lcm(m, n);
printf("最大公约数是:%d\n", GCD);
printf("最小公倍数是:%d\n", LCM);
return 0;
}
```
示例输出:
```
请输入两个正整数m和n:12 18
最大公约数是:6
最小公倍数是:36
```
阅读全文