diff --git a/README.md b/README.md new file mode 100644 index 0000000..de0b202 --- /dev/null +++ b/README.md @@ -0,0 +1,43 @@ +# Алгоритмы решения прикладных задач, 1-й семестр, 2-я практика + +## Задания + +### Задание 1 + +Написать программу для поиска наибольшего общего делителя (числа вводятся с клавиатуры после запуска программы): +Нечетные варианты: наибольший делитель трех чисел методом деления (для поиска остатка отделения в языке C++ используется операция %) +Четные варианты: наибольший общий делитель четырех чисел метолом вычитания + +```cpp +// Функция для нахождения НОД двух чисел (метод деления) +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); +} +```