21xrx.com
2024-09-17 04:40:05 Tuesday
登录
文章检索 我的文章 写文章
Java实现最小公倍数算法
2023-06-13 22:04:11 深夜i     --     --
Java 最小公倍数 辗转相除法 枚举法

最小公倍数(LCM)是指多个整数中同时为它们的倍数时所需要的最小正整数,也称为最小公倍数。在Java编程中,可以通过一些算法来求取最小公倍数。本文将介绍两种常用的Java实现最小公倍数算法的方式。

1. 辗转相除法

辗转相除法,又称为欧几里得算法,是求最大公约数的常见算法之一。由于最小公倍数与最大公约数有以下关系:lcm(a, b) = a * b / gcd(a, b),因此辗转相除法也可以用来求最小公倍数。

下面是Java实现辗转相除法的代码案例:


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

  return a * b / gcd(a, b);

}

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

  return b == 0 ? a : gcd(b, a % b);

}

2. 枚举法

枚举法是一种暴力解法,它通过枚举每个数的倍数来求最小公倍数。具体实现过程是:首先找到这几个数中的最大值max,然后从max开始依次枚举max的倍数,直到找到能够同时被这几个数整除的最小数。

以下是Java实现枚举法的代码案例:


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

  int max = Math.max(a, b);

  int lcm = 0;

  while(true) {

    lcm = max;

    if(lcm % a == 0 && lcm % b == 0)

      break;

    

    max++;

  }

  return lcm;

}

通过以上两种算法的实现,我们可以在Java编程中方便地求取最小公倍数。需要注意的是,对于比较大的数,枚举法的效率可能会比较低,因此建议选择辗转相除法来求解。

  
  

评论区

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