辗转相除法计算最大公约数

2,929 阅读1分钟

辗转相除法:辗转相除法是求两个自然数的最大公约数的一种方法,也叫欧几里德算法。 过程:

image.png

用辗转相除法求几个数的最大公约数,可以先求出其中任意两个数的最大公约数,再求这个最大公约数与第三个数的最大公约数,依次求下去,直到最后一个数为止。最后所得的那个最大公约数,就是所有这些数的最大公约数。

程序实现:

/**
 * Created by hongcaixia on 2019/10/6.
 */
public class GreatestCommonDivisor {

    public static void main(String[] args) {
        int maxComm = getMaxComm(319, 377);
        //29
        System.out.println("最大公约数是:"+maxComm);
    }

    public static int getMaxComm(int m,int n){
        if(m<=0 || n<=0){
            System.out.println("输入数据错误!");
        }

        if(m<n){
            int temp = 0;
            //m,n交换
            temp = m;
            m = n;
            n = temp;
        }
        int r = m%n;
        while (r!=0){
            m = n;
            n = r;
            r = m%n;
        }
        return n;
    }
}