java - 寻找最大公约数

标签 java recursion int double

基于他们在纸上解决这个问题的方式:

http://www.wikihow.com/Find-the-Greatest-Common-Divisor-of-Two-Integers

我正在尝试使用 108 作为 m 和 30 作为 n 来求解 Java 中的最大公约数。问题是,当我运行程序时,结果最终为0。我知道我可以做到这个方法,因为我自己写了代码,但每次我写这样的方法时都会遇到绊脚石:

public static double getGcd_nr(int m, int n){
    int dividend = m;
    int divisor = n;
    int quotient = dividend/divisor;
    int remainder = dividend % divisor;
    int gcd = 0;

    for(int i = divisor * quotient + remainder; i > 0; i--){
        dividend = divisor;
        divisor = remainder;
        if (remainder == 0){
            gcd = divisor;
        }
    }
    return gcd;
}

请您帮助我完成我需要完成的事情。我需要编写自己的代码,而不是复制别人的代码。

最佳答案

while(m!=n)
{
  if(m >= n-1)
     m = m-n;
  else 
     n = n - m;  
}
return m;

用于查找两个数字的 gcd 的非递归解决方案。

关于java - 寻找最大公约数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25609641/

相关文章:

java - mustache -Java : How to get value in Map by key

recursion - 需要帮助找到列表中的第二大数字。 Racket

java - 从控制台读取 int

list - 在列表中找到倒数第二个项目,请解释此解决方案

c - 扫描整数数组

c - 用 0 初始化整数与不在 C 中初始化它

java - Java 中 ~ 是什么意思?

java - Eclipse 重构 : change constructor method signature for all subclasses

java - 如何使用android媒体记录器输出基本流?

java - 递归创建树时出现 OutOfMemoryError 错误?