Найти НОД для одномерного массива, используя алгоритм Евклида - 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;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы
  2. Определяется функция GCD, которая принимает два целых числа и возвращает их НОД
  3. В функции main считывается размер массива и инициализируется переменная result значением 0
  4. Для каждого элемента массива считывается его значение и обновляется переменная result, если текущий элемент является первым ненулевым числом
  5. Если ввод некорректен, выводится сообщение об ошибке и возвращается -1
  6. Выводится сообщение о нахождении НОД и его значение

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы