C++求最大公约数最小公倍数
时间: 2023-07-11 12:44:57 浏览: 85
可以使用辗转相除法求最大公约数,使用公式 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;
}
```
注意,辗转相除法可以使用递归实现,但由于递归会占用额外的空间,可能会导致栈溢出等问题,因此使用循环实现较为安全和稳定。
相关问题
c++求最大公约数和最小公倍数
以下是C++求最大公约数和最小公倍数的代码示例:
1. 求两个数的最大公约数
```c++
int Gcd(int a, int b) {
if (b == 0) {
return a;
}
return Gcd(b, a % b);
}
```
2. 求两个数的最小公倍数
```c++
int Lcm(int a, int b) {
return a / Gcd(a, b) * b;
}
```
3. 求多个数的最大公约数
```c++
int Gcd(vector<int>& nums) {
int res = nums[0];
for (int i = 1; i < nums.size(); i++) {
res = Gcd(res, nums[i]);
}
return res;
}
```
4. 求多个数的最小公倍数
```c++
int Lcm(vector<int>& nums) {
int res = nums[0];
for (int i = 1; i < nums.size(); i++) {
res = Lcm(res, nums[i]);
}
return res;
}
```
C++求最大公约数和最小公倍数
以下是C++求最大公约数和最小公倍数的代码示例:
1. 求最大公约数
```cpp
int Gcd(int a, int b) {
if (b == 0) {
return a;
}
return Gcd(b, a % b);
}
```
2. 求最小公倍数
```cpp
int Lcm(int a, int b) {
return a / Gcd(a, b) * b;
}
```
3. 求多个数的最小公倍数
```cpp
int Lcm(vector<int>& nums) {
int lcm = nums[0];
for (int i = 1; i < nums.size(); i++) {
lcm = Lcm(lcm, nums[i]);
}
return lcm;
}
```