h - c/c++训练1---最大公约数与最小公倍数
时间: 2023-04-19 08:02:54 浏览: 243
好的,下面是回复:
最大公约数和最小公倍数是数学中的基本概念,也是编程中常用的算法。在C/C++语言中,可以通过循环、递归等方式来实现求解最大公约数和最小公倍数的算法。
求解最大公约数的算法有辗转相除法、更相减损法、欧几里得算法等。其中,欧几里得算法是最常用的一种,其基本思想是用较大数除以较小数,然后用余数去除除数,直到余数为为止,此时除数即为最大公约数。
求解最小公倍数的算法可以通过最大公约数来实现,即两数的积除以最大公约数即为最小公倍数。
下面是C/C++语言中求解最大公约数和最小公倍数的示例代码:
//求最大公约数
int gcd(int a, int b) {
if (b == ) {
return a;
} else {
return gcd(b, a % b);
}
}
//求最小公倍数
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
以上代码中,gcd函数使用了递归的方式来实现求解最大公约数的算法,lcm函数则是通过最大公约数来实现求解最小公倍数的算法。
相关问题
c/c++训练1---最大公约数与最小公倍数
最大公约数和最小公倍数是数学中的基本概念,也是编程中常用的算法。在C/C++中,可以使用辗转相除法或欧几里得算法来求解最大公约数,使用最大公约数求解最小公倍数。
辗转相除法是一种求最大公约数的方法,其基本思想是用较大数除以较小数,再用余数去除除数,直到余数为为止,此时除数即为最大公约数。
欧几里得算法也是一种求最大公约数的方法,其基本思想是用较大数除以较小数,得到余数后,将较小数作为除数,余数作为被除数,继续进行相除,直到余数为为止,此时除数即为最大公约数。
求最小公倍数可以通过最大公约数来实现,最小公倍数等于两数之积除以最大公约数。
以下是C/C++代码示例:
辗转相除法:
```c
int gcd(int a, int b) {
if (b == ) {
return a;
}
return gcd(b, a % b);
}
```
欧几里得算法:
```c
int gcd(int a, int b) {
while (b != ) {
int r = a % b;
a = b;
b = r;
}
return a;
}
```
最小公倍数:
```c
int lcm(int a, int b) {
return a * b / gcd(a, b);
}
```
c++最小公倍数最大公约数
以下是C++中求最小公倍数和最大公约数的代码示例:
1. 求最小公倍数:
```cpp
#include <iostream>
using namespace std;
int main() {
long long a, b, r;
cin >> a >> b;
long long m = a, n = b;
while (a % b != 0) {
r = a % b;
a = b;
b = r;
}
cout << m * n / b << endl;
return 0;
}
```
2. 求最大公约数:
```cpp
#include <iostream>
using namespace std;
int main() {
int a, b, r;
cin >> a >> b;
while (a % b != 0) {
r = a % b;
a = b;
b = r;
}
cout << b << endl;
return 0;
}
```
阅读全文