最大公因數,也稱最大公約數、最大公因子,指兩個或多個整數共有約數中最大的一個。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;
}