/* Задание 1 * Написать программу для поиска наибольшего общего делителя (числа * вводятся с клавиатуры после запуска программы): * Нечетные варианты: наибольший делитель трех чисел методом деления * (для поиска остатка отделения в языке C++ используется операция %) * Четные варианты: наибольший общий делитель четырех чисел метолом * вычитания */ #include // Функция для нахождения НОД двух чисел (метод деления) int gcdDivision(int a, int b) { while (b != 0) { int temp = b; b = a % b; a = temp; } return a; } // Функция для нахождения НОД трех чисел int gcdOfThreeNumbers(int x, int y, int z) { return gcdDivision(gcdDivision(x, y), z); } // Функция для нахождения НОД двух чисел методом вычитания int gcdSubtraction(int a, int b) { while (a != b) { if (a > b) { a -= b; } else { b -= a; } } return a; // или b, так как a == b } // Функция для нахождения НОД четырех чисел int gcdOfFourNumbers(int w, int x, int y, int z) { return gcdSubtraction(gcdSubtraction(gcdSubtraction(w, x), y), z); } int main() { int w, x, y, z; std::setlocale(LC_ALL, "Russian"); std::cout << "Введите четыре числа: "; std::cin >> w >> x >> y >> z; std::cout << "Найдем НОД чисел x, y, z: " << gcdOfThreeNumbers(x, y, z) << std::endl; std::cout << "Найдем НОД чисел w, x, y, z: " << gcdOfFourNumbers(w, x, y, z) << std::endl; return 0; }