Чтобы вычислить наибольший общий делитель (НОД) двух чисел в C++, можно использовать несколько методов. Вот несколько часто используемых подходов:
-
Алгоритм Евклида:
Алгоритм Евклида — широко используемый метод поиска НОД двух чисел. Он включает в себя многократное деление большего числа на меньшее и получение остатка до тех пор, пока остаток не станет равным нулю. НОД — это ненулевой остаток, полученный в конце процесса. -
Рекурсивный алгоритм Евклида:
Подобно алгоритму Евклида, рекурсивная версия применяет ту же логику, но рекурсивным образом. Он продолжает делить большее число на меньшее, пока остаток не станет нулевым. -
Алгоритм двоичного НОД:
Алгоритм двоичного НОД, также известный как алгоритм Штейна, является эффективным методом вычисления НОД. Он использует побитовые операции и деление на 2, чтобы найти НОД двух чисел.
Вот пример реализации алгоритма Евклида на C++:
#include <iostream>
int gcd(int a, int b) {
if (b == 0)
return a;
else
return gcd(b, a % b);
}
int main() {
int num1 = 48;
int num2 = 18;
int result = gcd(num1, num2);
std::cout << "GCD: " << result << std::endl;
return 0;
}