Elaborati un algoritm care sa returneze cel mai mare divizor comun a trei numere întregi
Răspunsuri la întrebare
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 :)