java 最大公约数gcd

最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。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;
    }

猜你喜欢

转载自blog.csdn.net/qq_35821988/article/details/78885910