一)最大公约数含义
最大公约数(greatest common divisor,简写为gcd;或highest common factor,简写为hcf),指某几个整数共有因子中最大的一个。即 如果一个数能够被a整除,又能够被b整除,则该数为a和b的公约数。两个数的最大公约数即是这两个数所有公约数中最大的那个数。
二) 最大公约数的求法
早在公元前300年左右,欧几里得就在他的著作《几何原本》中给出了高效的解法——辗转相除法。辗转相除法可描述为:假设用f(x, y)表示x,y的最大公约数,取k = x/y,b = x%y,则x = ky + b,如果一个数能够同时整除x和y,则必能同时整除b和y;而能够同时整除b和y的数也必能同时整除x和y,即x和y的公约数与b和y的公约数是相同的,其最大公约数也是相同的,则有f(x, y)= f(y, x%y)(y > 0),如此便可把原问题转化为求两个更小数的最大公约数,直到其中一个数为0,剩下的另外一个数就是两者最大的公约数。
(三)代码实现:
我们可通过递归方式来求两个数的最大公约数。
public class Test {
public static int getGreatestCommonDivisor(int a , int b){
if(a ==0 || b== 0){
if (a ==0) return b;
if (b ==0) return a;
if (a ==0 && b ==0) return 0;
}
int temp= a%b;
if(temp != 0){
a = b;
b = temp;
return getMaxYueshu(a, b);
}else {
return b ;
}
}
}