C++输入两个正整数 m 和 n,求其最大公约数和最小公倍数
时间: 2023-04-08 19:01:34 浏览: 152
最大公约数可以使用辗转相除法求解,最小公倍数可以通过两数乘积除以最大公约数得到。具体计算过程如下:
设 m > n,则有:
1. 用 n 去除 m,得到余数 r1
2. 若 r1 = 0,则 n 即为最大公约数,最小公倍数为 m * n
3. 若 r1 ≠ 0,则用 r1 去除 n,得到余数 r2
4. 若 r2 = 0,则 r1 即为最大公约数,最小公倍数为 m * n / r1
5. 若 r2 ≠ 0,则继续用 r2 去除 r1,得到余数 r3
6. 重复上述步骤,直到余数为 0,此时上一步的除数即为最大公约数,最小公倍数为 m * n / 最大公约数
因为这是一个数学问题,所以我可以回答。
相关问题
C++输入两个正整数m和n求其最大公约数和最小公倍数
以下是C++代码实现:
```c++
#include <iostream>
using namespace std;
// 求最大公约数函数
int gcd(int a, int b) {
if (b == 0) {
return a;
}
return gcd(b, a % b);
}
// 求最小公倍数函数
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
int main() {
int m, n;
cout << "请输入两个正整数m和n:" << endl;
cin >> m >> n;
// 求最大公约数
int max_common_divisor = gcd(m, n);
cout << "最大公约数为:" << max_common_divisor << endl;
// 求最小公倍数
int min_common_multiple = lcm(m, n);
cout << "最小公倍数为:" << min_common_multiple << endl;
return 0;
}
```
输入示例:
```
请输入两个正整数m和n:
36 48
```
输出示例:
```
最大公约数为:12
最小公倍数为:144
```
c++输入两个正整数m和n,求其最大公约数和最小公倍数。
以下是C++求两个正整数最大公约数和最小公倍数的代码:
```c++
#include <iostream>
using namespace std;
int main() {
int m, n, gcd, lcm, temp;
cout << "请输入两个正整数,用空格隔开:" << endl;
cin >> m >> n;
// 求最大公约数
temp = m % n;
while (temp != 0) {
m = n;
n = temp;
temp = m % n;
}
gcd = n;
// 求最小公倍数
lcm = m * n / gcd;
cout << "最大公约数是:" << gcd << endl;
cout << "最小公倍数是:" << lcm << endl;
return 0;
}
```
阅读全文