寻找最大的公约数

时间:2014-09-01 16:10:21

标签: java recursion int double

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

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

我试图解决Java中最大的公约数,使用108作为m和30作为n。问题是,当我运行程序时,结果最终为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;
}

请你帮助我完成我需要完成的任务。我需要编写自己的代码而不是复制别人的代码。

1 个答案:

答案 0 :(得分:1)

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

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