目录
含义
欧几里得算法,又名辗转相除法,字面意思,两数反复相除得到最大公约数。
举例
例如求6和4的最大公约数。
第一步:6 % 4 == 2 ,但余数不为0,所以进行下一步
第二步:此时6用4代替,4用余数2代替,再次进行上述操作,4 % 2 == 0,此时余数为0,则得出最小公倍数2
C++代码实现1
#include<iostream>
using namespace std;
// 求最大公约数
int gcd(int m, int n)
{
if (m % n == 0)
{
return n;
}
else
{
return gcd(n, m % n);
}
}
int main()
{
// 输入两个数,求解最大公约数
int m, n;
cin >> m >> n;
cout << gcd(m, n) << endl;
return 0;
}
运行结果
C++代码实现2
可以用三目运算符,将上述代码进行简化
#include<iostream>
using namespace std;
// 求最大公约数
int gcd(int m, int n)
{
return m % n == 0 ? n : gcd(n, m % n);
}
int main()
{
// 输入两个数,求解最大公约数
int m, n;
cin >> m >> n;
cout << gcd(m, n) << endl;
return 0;
}