C++ программа для вычисления наибольшего общего делителя [закрыто]

Я начал эту программу для вычисления наибольшего общего делителя. Это то, что у меня есть до сих пор:

#include <iostream>
#include <math.h>
using namespace std;
int getGCD(int a, int b)
{
    a = a % b;
    if (a == 0)
    {
        return b;
        b = b % a;
    }
    if (b == 0)
    {
        return a;
    }
}
int main()

{
    int x, y;
    cout << "Please enter two integers x and y, for GCD calculation" << endl;
    cin >> x >> y;
    cout << "The GCD of " << x << "and " << y << " is" << getGCD(x, y) << endl;
    return 0;
}

Я всегда получаю 0 для GCD. Что я делаю не так?

2 ответов


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

но у вас есть две проблемы, которые я вижу, если вы звоните внутри другого цикла.

вы возвращаетесь в обоих случаях, либо если, либо иначе, поэтому вы проходите здесь только один раз.

кроме того, эта часть не имеет смысла, зачем изменять b значение после выполнения return?

          return b;

          b = b%a;

вы должны быть использование рекурсии для этого, кстати.

http://rosettacode.org/wiki/Greatest_common_divisor#Recursive_Euclid_algorithm


int getGCD(int a, int b) {

/ / здесь нам нужно проверить, возвращает ли b == 0 a

    if (b == 0) {
        return a;
    }
    return gcd(b, a % b);
}

реализация алгоритма Евклида