c++求两个数的最小公倍数
时间: 2023-10-28 13:06:26 浏览: 45
假设两个数分别为a和b,它们的最小公倍数为c。可以使用以下公式求解:
c = a * b / gcd(a, b)
其中,gcd(a, b)表示a和b的最大公约数。可以使用辗转相除法来求得最大公约数,具体步骤如下:
1. 令r为a除以b的余数,即r = a % b。
2. 若r为0,则gcd(a, b) = b。
3. 若r不为0,则将b赋值给a,将r赋值给b,然后重复步骤1。
直到r为0为止,此时b即为a和b的最大公约数。将最大公约数代入第一个公式,即可求得最小公倍数c。
相关问题
c++求两个数最小公倍数,使用while
可以使用以下代码实现:
```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++求两个数的最大公约数和最小公倍数
以下是用C++求两个数的最大公约数和最小公倍数的代码和解释:
```c++
#include <iostream>
using namespace std;
int main() {
int m, n, gys, gbs, i, j;
cout << "请输入两个正整数m和n:" << endl;
cin >> m >> n;
// 求最大公约数
for (i = 1; i <= m && i <= n; i++) {
if ((m % i == 0) && (n % i == 0)) {
gys = i;
}
}
cout << "m与n的最大公约数是:" << gys << endl;
// 求最小公倍数
for (j = 1;; j++) {
if ((j % m == 0) && (j % n == 0)) {
gbs = j;
cout << "m与n的最小公倍数是:" << gbs << endl;
break;
// 如果没有break,程序将无限循环;如果break放到if的花括号外面,将不会输出结果,因为第一次判断后,程序就已经跳出循环了。
}
}
return 0;
}
```
解释:
1. 首先,我们定义了4个变量:m、n、gys、gbs,其中m和n是用户输入的两个正整数,gys和gbs分别表示最大公约数和最小公倍数。
2. 然后,我们使用for循环来求最大公约数。从1开始循环,一直到m和n中较小的那个数为止,每次判断i是否是m和n的公约数,如果是,就将i赋值给gys。
3. 最后,我们使用另一个for循环来求最小公倍数。从1开始循环,每次判断j是否是m和n的公倍数,如果是,就将j赋值给gbs,并输出结果,然后使用break语句跳出循环。