最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。a,b的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短除法、辗转相除法、更相减损法。与最大公约数相对应的概念是最小公倍数,a,b的最小公倍数记为[a,b]。
该实现方式为辗转相除法:
基础实现方法(递归实现)
public int GCD(int a,int b) {
if(b==0)
return a;
else
return GCD(b,a%b);
}
快速求解公约数算法:
public int Quick_GCD(int a,int b)
{
if(a==0) return b;
if(b==0) return a;
if(!(a%2==1)&&!(b%2==1))
{
return Quick_GCD(a>>1,b>>1)<<1;
}
else if(!(b%2==1))
{
return Quick_GCD(a,b>>1);
}
else if(!(a%2==1))
{
return Quick_GCD(a>>1,b);
}
else
{
return Quick_GCD(Math.abs(a-b),Math.min(a,b));
}
}
基本辗转相除算法:
public int GCD_base(int a,int b)
{
int r;
while(b>0)
{
r=a%b;
a=b;
b=r;
}
return a;
}