求两个正整数m和n的最大公约数(GCD)和最小公倍数(LCM)的方法如下:
最大公约数(GCD)
最大公约数可以使用欧几里得算法(辗转相除法)来求解。具体步骤如下:
1. 用较大的数除以较小的数,得到余数。
2. 用较小的数除以上一步的余数,再得到新的余数。
3. 重复上述步骤,直到余数为0。此时,最后一个非零余数就是最大公约数。
最小公倍数(LCM)
最小公倍数可以通过以下公式计算:
\[ \text{LCM}(m, n) = \frac{m \times n}{\text{GCD}(m, n)} \]
代码示例
```cpp
include using namespace std; int main() { int m, n; cout << "请输入两个正整数m和n: "; cin >> m >> n; // 确保m是较大的数 if (m < n) { swap(m, n); } // 使用欧几里得算法求最大公约数 int gcd = 0; while (n != 0) { int temp = n; n = m % n; m = temp; } gcd = m; // 计算最小公倍数 int lcm = m * n / gcd; cout << "最大公约数为: " << gcd << endl; cout << "最小公倍数为: " << lcm << endl; return 0; } ``` 解释 程序首先接收两个正整数m和n。 确保m是较大的数。 通过循环计算最大公约数。 使用公式 \( \text{LCM}(m, n) = \frac{m \times n}{\text{GCD}(m, n)} \) 计算最小公倍数。 程序输出最大公约数和最小公倍数。 这个方法简单且高效,适用于大多数情况。输入:
调整大小:
欧几里得算法:
计算最小公倍数:
输出: