21xrx.com
2024-12-23 04:42:32 Monday
登录
文章检索 我的文章 写文章
关键词:JAVA、最大公约数、最小公倍数
2023-06-11 02:58:05 深夜i     --     --

我最近在学习JAVA编程,有一个题目需要求两个数的最大公约数和最小公倍数,于是我就开始了我的JAVA编程之旅。首先,我了解了最大公约数和最小公倍数的概念和求法,然后开始着手编写代码。

针对最大公约数,我写了四种不同的方法。第一种是利用辗转相除法,代码如下:


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

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

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

  int remainder = 1;

  while (remainder != 0)

    remainder = max % min;

    max = min;

    min = remainder;

  

  return max;

}

第二种方法是欧几里得算法,代码如下:


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

  if (b == 0)

    return a;

   else {

    return getGcd(b, a % b);

  }

}

第三种方法是更相减损术,代码如下:


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

  if (a == b)

    return a;

   else if (a > b) {

    return getGcd(a-b, b);

  } else {

    return getGcd(b-a, a);

  }

}

第四种方法是利用位运算,代码如下:


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

  if (a == 0 || b == 0) {

    return a + b;

  }

  int i;

  for (i = 0; ((a | b) & 1) == 0; ++i)

    a >>= 1;

    b >>= 1;

  

  while ((a & 1) == 0)

    a >>= 1;

  

  do {

    while ((b & 1) == 0)

      b >>= 1;

    

    if (a > b)

      int temp = a;

      a = b;

      b = temp;

    

    b = (b - a);

  } while (b != 0);

  return a << i;

}

除此之外,我还写了一个求最小公倍数的方法,代码如下:


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

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

}

通过以上几种方法,我成功地求得了两个数的最大公约数和最小公倍数,同时也更加熟悉了JAVA编程。不过,编程的道路上还有很多需要学习和探索的地方,我也将继续努力前行。

标题:JAVA求最大公约数和最小公倍数的四种方法

  
  

评论区

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