First commit
This commit is contained in:
56
task1.cpp
Normal file
56
task1.cpp
Normal file
@@ -0,0 +1,56 @@
|
||||
/* Задание 1
|
||||
* Написать программу для поиска наибольшего общего делителя (числа
|
||||
* вводятся с клавиатуры после запуска программы):
|
||||
* Нечетные варианты: наибольший делитель трех чисел методом деления
|
||||
* (для поиска остатка отделения в языке C++ используется операция %)
|
||||
* Четные варианты: наибольший общий делитель четырех чисел метолом
|
||||
* вычитания
|
||||
*/
|
||||
|
||||
#include <iostream>
|
||||
|
||||
// Функция для нахождения НОД двух чисел (метод деления)
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user