最大公约数与最小公倍数 c++
问题描述:
输入两个整数,求这两个整数的最大公约数和最小公倍数。
代码参考:
注意:最小公倍数 =(已知两个整数的乘积)/ 最大公约数
参考自 - [ 菜鸟教程]
#include<iostream>
using namespace std;
int main() {
int a, b = 0;
cout << "Enter the two numbers: ";
cin >> a >> b;
// 最大公约数
if (a < b){
int k = a;
a = b;
b = k;
}
int i = b;
for (; i > 1; --i) {
if (a % i == 0 && b % i == 0){
cout << i << endl;
break;
}
}
// 最大公约数-另一种方法
int a1 = a, b1 = b;
while (a1 != b1) {
if (a1 > b1)
a1 -= b1;
else
b1 -= a1;
}
cout << a1 << endl;
// 最大公约数-辗转相除gcd法
if (a < b){
int k = a;
a = b;
b = k;
}
cout << gcd(a, b) << endl;
// 最小公倍数
cout << a * b / i << endl;
return 0;
}
const int &gcd(int a, int b) {
return b ? gcd(b, a % b) : a;
}