Найти НОД для одномерного массива, используя алгоритм Евклида - C (СИ)
Формулировка задачи:
Вопрос в том как найти НОД для одномерного массива, используя алгоритм Евклида?
Решение задачи: «Найти НОД для одномерного массива, используя алгоритм Евклида»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> inline int GCD(int __1, int __2) { __1 = abs(__1); __2 = abs(__2); int buf; if(__1 == 0 && __2 == 0) return 1; if(__1 == 0) return __2; if(__2 == 0) return __1; while(__2) { buf = __1 % __2; __1 = __2; __2 = buf; } return __1; } int main(void) { int arr_size, i, result = 0, tmp; printf("Array size: "); if(scanf("%d", &arr_size) != 1) { printf("Incorrect input!\n"); return -1; } for(i = 0; i < arr_size; i++) { printf("arr[%d]=", i); if(scanf("%d", &tmp) != 1) { printf("Incorrect input!\n"); return -1; } if(!result) result = tmp; else result = GCD(result, tmp); } printf("GCD = %d\n", result); return 0; }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Определяется функция GCD, которая принимает два целых числа и возвращает их НОД
- В функции main считывается размер массива и инициализируется переменная result значением 0
- Для каждого элемента массива считывается его значение и обновляется переменная result, если текущий элемент является первым ненулевым числом
- Если ввод некорректен, выводится сообщение об ошибке и возвращается -1
- Выводится сообщение о нахождении НОД и его значение
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д