Нахождение наибольшего общего делителя

1

Исходя из того, как они решили эту проблему на бумаге:

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;
}

Пожалуйста, помогите мне выполнить то, что мне нужно. Мне нужно написать свой собственный код, а не копировать чужой.

  • 0
    Вы хотите пересчитать quotient и remainder ? Я так полагаю, из-за (в настоящее время избыточного) переназначения dividend . Вы не; переназначение dividend и divisor - это не одно и то же.
Теги:
recursion
int
double

1 ответ

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

Нерекурсивное решение для нахождения gcd двух чисел.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню