From 80fe7853b8ad90c1896ef1bb92a6f3d23ddc90ae Mon Sep 17 00:00:00 2001 From: Nikolai Papin Date: Sat, 26 Oct 2024 09:18:00 +0300 Subject: [PATCH] Created readme.md --- README.md | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 README.md 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); +} +```