Блог пользователя jaigurudev

Автор jaigurudev, 10 лет назад, По-английски

Can any help with an algo that is fast enough to calculate the gcd of two positive numbers. I think one good approach will be to use __gcd of C++ but it is inbuilt, i want to create my own function. Please help...

  • Проголосовать: нравится
  • -16
  • Проголосовать: не нравится

»
10 лет назад, # |
Rev. 3   Проголосовать: нравится 0 Проголосовать: не нравится

a recursive method will work perfectly

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

»
10 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится
»
10 лет назад, # |
  Проголосовать: нравится +5 Проголосовать: не нравится
»
10 месяцев назад, # |
Rev. 4   Проголосовать: нравится 0 Проголосовать: не нравится

Euclidean Algorithm is the most efficient for calculating GCD.

Method 1(Recursive) :

int gcd_number(int a, int b) {
    if (b==0) {
        return a;
    }
    else {
        return gcd_number(b, a-b*floor(a/b));
    }
}

Method 2 (Recursive) :

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