求两个数的公因数的两种方法java实现

1.方法一是,循环取余计算

    public static int gcd(int a,int b){

        while(b != 0){
            int temp = a % b;
            a = b;
            b = temp;
        }
        return a;

    }

2.方法二,递归实现。

    public static int gcd1(int a,int b){
        if(b == 0){
            return a;
        }
        if(a % 2 == 0 && b % 2 == 0){
            return 2*gcd1(a / 2,b/2);
        }
        if( a % 2 == 0 && b % 2 != 0){
            return gcd1(a/2,b);
        }
        if( a % 2 != 0 && b % 2 == 0){
            return gcd1(a,b/2);
        }
        if( a % 2 != 0 && b % 2 != 0){
            return gcd1((a+b)/2,(a-b)/2);
        }
        return 1;
    }

你可能感兴趣的:(数据结构java实现)