Informatică, întrebare adresată de adrian5623, 8 ani în urmă

Elaborati un algoritm care sa returneze cel mai mare divizor comun a trei numere întregi​

Răspunsuri la întrebare

Răspuns de ovdumi
1

Răspuns:

#include <iostream>

using namespace std;

int main()

{

int a, b, c;

cin >> a >> b >> c;

while (a != b)

{

 if (a > b)

  a = a - b;

 else b = b - a;

}

while (a != c)

{

 if (a > c)

  a = a - c;

 else c = c - a;

}

cout << c << endl;

return 0;

}

Explicație:

Ideea din spatele acestui algoritm este simpla : calculam cel mai mare divizor comun al oricaror 2 numere si apoi calculam cmmdc al acestuia si al celui de-al treilea numar. In acest caz, am calculat cmmdc al primelor 2 numere. Astfel, la sfarsitul primei structuri while, a si b sunt egale, ambele memorand cmmdc al acestora. Dupa accea, am calculat cmmdc al lui c si al lui a (sau b, ca oricum sunt egale) si la sfarsit cele doua numere (a si c) sunt egale. La final, il tiparim pe unul dintre ele (in cazul meu este c). Daca ai vreo nelamurire, nu ezita sa mi-o spui :)

Alte întrebări interesante