美文网首页
最大公约数

最大公约数

作者: beautymo | 来源:发表于2018-03-26 21:13 被阅读0次

    循环取余法

    假设a<b,i为最大公约数
    a = ka*i 
    b = kb*i 
    b-a = (kb - ka)*i 则 b-a 也为i倍数,则此时b-a充当 a 的位置 , a 充当 b 的位置 
    

    用循环算法如下:

        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);
        }
    

    相关文章

      网友评论

          本文标题:最大公约数

          本文链接:https://www.haomeiwen.com/subject/czkdcftx.html