用c++中的while循环求最小公倍数
时间: 2024-11-22 20:34:04 浏览: 8
在C++中,求两个整数的最小公倍数(LCM)通常需要借助于这两个数的最大公约数(GCD)来计算。由于while循环非常适合处理这类递归性质的问题,我们可以创建一个函数来找到两个数的GCD,然后再用这个GCD去求LCM。这里是一个简单的例子:
```cpp
#include <iostream>
using namespace std;
// 求最大公约数 (Euclidean算法)
int gcd(int a, int b) {
while (b != 0) {
int temp = a % b;
a = b;
b = temp;
}
return a;
}
// 根据gcd求最小公倍数
int lcm(int a, int b) {
return (a * b) / gcd(a, b);
}
int main() {
int num1, num2;
cout << "请输入两个整数: ";
cin >> num1 >> num2;
// 使用while循环求最小公倍数
while (true) {
if (lcm(num1, num2) == num1 * num2) { // 如果当前的LCM正好等于两数乘积,则退出循环
break;
} else {
// 可能的情况是当前的两数乘积大于实际的LCM,继续减小其中一个数并更新LCM
num1 > num2 ? num1 -= num1 % num2 : num2 -= num2 % num1; // 向较小的那个数减去余数
}
}
cout << "最小公倍数是: " << lcm(num1, num2) << endl;
return 0;
}
```
在这个程序中,我们先通过while循环不断调整较大的那个数,直到`lcm()`的结果变成`num1`和`num2`的乘积,这时就找到了最小公倍数。
阅读全文