利用辗转相除法求两个数的最大公约数的Java实现

来源:互联网 发布:jre windows 编辑:程序博客网 时间:2024/06/05 17:18

两个整数的最大公约数是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。例如,252和105的最大公约数是21(252 = 21 × 12;105 = 21 × 5);因为252 − 105 = 21 × (12 − 5) = 147,所以147和105的最大公约数也是21。在这个过程中,较大的数缩小了,所以继续进行同样的计算可以不断缩小这两个数直至其中一个变成零。这时,所剩下的还没有变成零的数就是两数的最大公约数。
具体如下图:
辗转相除法
代码很简单,具体的Java实现如下:

   public static int mod(int a, int b) {        if (a % b == 0) {            return b;        } else {            while (b != 0) {                int temp = a % b;                a = b;                b = temp;            }            return a;        }    }