21xrx.com
2024-09-20 00:53:38 Friday
登录
文章检索 我的文章 写文章
《Java实现最大公约数和最小公倍数求法,附带代码案例》
2023-06-17 01:57:03 深夜i     --     --
Java编程 最大公约数 最小公倍数

在数学里,最大公约数和最小公倍数是基本的概念。在Java程序中,求解最大公约数和最小公倍数也是一项常见的任务。本篇文章将介绍Java中实现最大公约数和最小公倍数求法的方法,并提供相应的代码案例。

最大公约数,又称公因数最大的数,是指两个或多个整数共有约数中最大的一个。求最大公约数有多种算法,其中最为经典的是辗转相除法。该算法基于下面的定理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。Java实现代码如下:


public static int getGcd(int a, int b) {

  int absa = Math.abs(a);

  int absb = Math.abs(b);

  while (absa != 0 && absb != 0)

    int temp = absa % absb;

    absa = absb;

    absb = temp;

  

  return absa == 0 ? absb : absa;

}

该代码实现的是求两个整数a和b的最大公约数,思路与辗转相除法一致。首先对a和b两数取绝对值,然后进行循环,直到其中一个数为0。每次循环中先计算两数的余数temp,将较小的数赋给absa,较大的数赋给absb,再将temp赋给absb,最后返回不为0的那个数。

最小公倍数是指两个或多个整数公有的倍数中最小的一个,更通俗的说法是除数与余数相乘等于原数的最小的正整数。Java中实现最小公倍数的方法可以通过最大公约数来推导。设两个整数a和b的最大公约数为gcd,则它们的最小公倍数等于a和b的乘积除以gcd。Java实现代码如下:


public static int getLcm(int a, int b) {

  int absa = Math.abs(a);

  int absb = Math.abs(b);

  return absa * absb / getGcd(absa, absb);

}

该代码实现的是求两个整数a和b的最小公倍数。首先对a和b两数取绝对值,然后调用上文提到的getGcd()方法计算它们的最大公约数,最后将它们的乘积除以最大公约数即可得到最小公倍数。需要注意的是,若a和b中有0,则最小公倍数为0。

综上所述,本文介绍了Java实现最大公约数和最小公倍数求法的方法,也提供了相应的代码案例。在算法的实践过程中,需要根据具体场景选择不同的求解方法。例如对于多个整数的最大公约数和最小公倍数,可以考虑将其转化为两个整数的问题,或者使用更高效的更高级的算法进行求解。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复