辗转相除法
欧几里得算法又称辗转相除法,是求最大公约数的最快方法
同时还可利用公式a*b=GCD*LCM
计算出最小公倍数(LCM)
步骤如下:
1.引入要求的两个数a和b
2.大的数除以小的数,然后把大的数用余数代替(重复的逻辑)
3.余数为零时,可求出最大公约数(边界)
因为符合递归的两个要素,所以用递归实现最为简单
图解:
c++用代码实现:
int gcd(int m,int n)
{
if(m%n==0) return n;
if(n%m==0) return m;
if(m>=n)
return gcd(n,m%n);
else
return gcd(m,n%m);
}