欢迎访问宙启技术站
智能推送

Java函数-求两个数的最大公约数

发布时间:2023-06-29 14:25:32

在Java中,可以使用多种方法来求两个数的最大公约数。下面将介绍三种常用的方法。

1. 辗转相除法

辗转相除法(也称为欧几里德算法)是求两个数的最大公约数的一种常用方法。该方法的基本思想是:设两个数为a和b,不断用b去除a得到余数r,然后将b赋值给a,将r赋值给b,再继续进行除法运算,直到余数为0为止。此时,b的值就是a和b的最大公约数。

以下是使用辗转相除法求最大公约数的Java代码:

public static int gcd(int a, int b) {
   while(b != 0) {
       int r = a % b;
       a = b;
       b = r;
   }
   return a;
}

2. 最小公倍数法

另一种常用的求最大公约数的方法是最小公倍数法。该方法的基本思想是:设两个数为a和b,先求出a和b的最小公倍数LCM,然后用LCM除以a和b得到的商即为最大公约数。

以下是使用最小公倍数法求最大公约数的Java代码:

public static int gcd(int a, int b) {
   int lcm = a * b / lcm(a, b);
   return lcm / a;
}

public static int lcm(int a, int b) {
   while(a != b) {
       if(a < b) {
           int temp = a;
           a = b;
           b = temp;
       }
       a = a - b;
   }
   return a;
}

3. 穷举法

还有一种简单粗暴的求最大公约数的方法是穷举法。穷举法的基本思想是从两个数中较小的数开始,依次递减,找到两个数都能整除的最大数。

以下是使用穷举法求最大公约数的Java代码:

public static int gcd(int a, int b) {
   int min = Math.min(a, b);
   int max = Math.max(a, b);
   for(int i = min; i > 0; i--) {
       if(max % i == 0 && min % i == 0) {
           return i;
       }
   }
   return 1;
}

以上就是求两个数的最大公约数的三种常用方法。根据实际情况选择其中一种方法进行实现即可。