Найти наибольший общий делитель - C (СИ)
Формулировка задачи:
Заданные четыре натуральные числа a, b, c, d. Найти их наибольший общий делитель.(через функцию)
Решение задачи: «Найти наибольший общий делитель»
textual
Листинг программы
#include <stdio.h>
void swap(int* a, int* b)
{
int t;
t = *a, *a = *b, *b = t;
}
int gcd(int a, int b)
{
while (a % b)
swap(&(a %= b), &b);
return b;
}
int main()
{
int a, b, c, d;
puts("Input four number:");
scanf("%d%d%d%d", &a, &b, &c, &d);
printf("%d", gcd(gcd(gcd(a, b), c), d));
return 0;
}
Объяснение кода листинга программы
- Включаем заголовочный файл
для использования функций ввода-вывода - Определяем функцию swap(int, int) для обмена значениями двух указателей на int
- Используем функцию swap(&(a %= b), &b) для обмена значениями переменных a и b, если a не делится на b без остатка
- Возвращаем значение переменной b в качестве наибольшего общего делителя
- Запрашиваем у пользователя ввод четырех чисел с помощью функции scanf
- Вызываем функцию gcd(gcd(gcd(a, b), c), d) для нахождения наибольшего общего делителя четырех чисел
- Выводим результат на экран с помощью функции printf