当前位置: 首页 > 知识库问答 >
问题:

如何编写一个Java函数来实现欧几里德算法来计算最大公约数gcd(m,n)[已关闭]

李嘉胜
2023-03-14

我需要编辑主函数来计算2到10之间的所有m和n的(m,n),但我不确定如何做到这一点。

我需要编写一个Java函数来实现欧几里德算法,计算最大公约数gcd(m,n),它是最大整数k除以m和n。

循环停止时,gcd以m为单位。将gcd()函数添加到NumericFunctions类中,并在main()中包含代码,以计算2到10之间所有m和n的gcd(m,n)。

源代码:

public class NumericFunctions {

   public static long factorial(int n) {

      long result = 1;

      for (int i = 2; i <= n; i++) {

         result *= i;
      }
      return result;
   }

   public static int gcd (int n, int m) {

      if ((m % n) == 0) 

         return n;

      else

         return gcd(n, m % n);
}

     public static void main(String[] args) {

         for (int n = 1; n <= 10; n++)

            for (int m = 1; m <= 10; m++){

               System.out.println(gcd(n,m));

               System.out.println(" ");


            }
      }

共有1个答案

伊飞光
2023-03-14

在你的gcd()函数中有一个无限递归(gcd(2,1) 例如)。所以,把你的函数改成这样

public static int gcd (int n, int m) {

    if (m > n) {
      if ((m % n) == 0) 
         return n;
      else
         return gcd(n, m % n);
    }
    else {
        if ((n % m) == 0) 
             return m;
          else
             return gcd(m, n % m);
    }
}

public static void main(String[] args) {    

    for (int n = 1; n <= 10; n++) {

        for (int m = 1; m <= 10; m++) {
            System.out.println("n: " + n + " m: " + m + " gcd: " + gcd(n, m));
        }
    }
}

 类似资料:
  • 问题内容: 因此,我正在用Python编写程序以获取任意数量的GCD。 该函数采用数字列表。这应该打印2。但是,我不了解如何递归使用算法,因此它可以处理多个数字。有人可以解释吗? 更新,仍然无法正常工作: 好,解决了 然后使用reduce,就像 问题答案: 由于GCD具有关联性,因此与相同。在这种情况下,Python的函数将是将情况`len(numbers) 2`简化为简单的2数比较的理想选择。代

  • 我试图让这个程序计算两个用户输入的正整数(x和y)的最大公约数(GCD)。set函数不返回可以索引的列表。关于如何找到GCD有什么建议吗?

  • 计算两个或两个以上数字/数字数组的最大公约数。 内部的 _gcd 函数使用递归。基本情况是,当 y 等于 0 的情况下,返回 x 。否则,返回 y 的最大公约数和x / y的其余数。 const gcd = (...arr) => { const _gcd = (x, y) => (!y ? x : gcd(y, x % y)); return [...arr].reduce((a, b)

  • 我是新来这个网站的,希望在这里玩得开心。我现在正在做一个作业,现在我被困在第一个问题上,程序要求两个整数来计算和显示最大公约数(GCD)。 根据问题: 计算GCD的经典算法,称为欧几里德算法,如下所示:设m和n为包含这两个数字的变量。如果n为0,则停止;m包含GCD。否则,当m除以n时,计算余数。将n复制到m中,并将余数复制到n中。然后重复该过程,从测试n是否为0开始。 有了这个提示,我决定按如下

  • Python3 实例 以下代码用于实现最大公约数算法: 实例(Python 3.0+)# Filename : test.py # author by : www.runoob.com # 定义一个函数 def hcf(x, y): """该函数返回两个数的最大公约数""" # 获取最小值 if x > y: smaller = y else: smaller = x for i in range

  • 例1:输入:nums=[3,4,2]输出:6解释:删除4以获得4点,因此3也被删除。然后,删除2个赚取2分。共获得6分。 以下是如何解决它的解释: 算法 我无法理解这里是如何使用和变量的,以及它是如何解决问题语句的。 你能帮我理解这一点吗。