最大公约数

循环取余法

假设a

用循环算法如下:

    public static int f(int m, int n){
        int a = m > n ? m:n;  // 将m,n中大的值赋予a
        int b = m < n ? m:n;  // 将m,n中小的值赋予b
        while (b > 0){
            int temp = b;
            b = a%b;  // 此时b变为余数
            a = temp; // a是(a,b)中较大的数
        }
        return a;
    }

用递归如下:

    public static int f(int m,int n){
        int a = m > n ? m:n;  // 将m,n中大的值赋予a
        int b = m < n ? m:n;  // 将m,n中小的值赋予b
        if( b == 0 ) return a;
            return f(a%b,b);
    }

你可能感兴趣的:(最大公约数)