c++求两个数最小公倍数,使用while
时间: 2024-03-01 07:52:11 浏览: 67
可以使用以下代码实现:
```c++
#include <iostream>
using namespace std;
int main()
{
int a, b, max, min, lcm;
cout << "请输入两个正整数:" << endl;
cin >> a >> b;
max = (a > b) ? a : b;
min = (a < b) ? a : b;
int i = 1;
while (true) {
lcm = max * i;
if (lcm % min == 0) {
cout << a << "和" << b << "的最小公倍数是:" << lcm << endl;
break;
}
i++;
}
return 0;
}
```
首先输入两个正整数,然后通过三目运算符找出它们的最大值和最小值。之后用一个 `while` 循环来找到它们的最小公倍数,循环从 1 开始,每次将最大值乘以循环变量 i 来得到可能的最小公倍数,如果当前得到的数能够被最小值整除,则说明当前得到的数就是最小公倍数,输出即可,使用 `break` 语句来退出循环。
相关问题
用c++求3个数最小公倍数代码
#include <stdio.h>
// 定义函数求两个数的最大公约数
int gcd(int a, int b) {
int temp;
while (b != 0) {
temp = a % b;
a = b;
b = temp;
}
return a;
}
// 定义函数求三个数的最小公倍数
int lcm(int a, int b, int c) {
int temp = gcd(gcd(a, b), c); // 先求出三个数的最大公约数
return a * b * c / temp; // 最小公倍数等于三个数的乘积除以最大公约数
}
int main() {
int a, b, c;
printf("请输入三个正整数:");
scanf("%d %d %d", &a, &b, &c);
printf("它们的最小公倍数为:%d\n", lcm(a, b, c));
return 0;
}
C++求最大公约数最小公倍数
可以使用辗转相除法求最大公约数,使用公式 lcm(a, b) = a * b / gcd(a, b) 求最小公倍数。
以下是 C++代码实现:
```c++
#include <iostream>
using namespace std;
int gcd(int a, int b) {
while(b != 0) {
int r = a % b;
a = b;
b = r;
}
return a;
}
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
int main() {
int a, b;
cout << "请输入两个整数:";
cin >> a >> b;
cout << "最大公约数为:" << gcd(a, b) << endl;
cout << "最小公倍数为:" << lcm(a, b) << endl;
return 0;
}
```
注意,辗转相除法可以使用递归实现,但由于递归会占用额外的空间,可能会导致栈溢出等问题,因此使用循环实现较为安全和稳定。
阅读全文