Найти наибольший общий делитель для заданной последовательности чисел - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Дано натуральное число n и натуральные числа a1, a2, ..., an. Найти наиболее больший общий делитель для заданной последовательности. Рекомендовано применение алгоритма Евклида.

Решение задачи: «Найти наибольший общий делитель для заданной последовательности чисел»

textual
Листинг программы
#include<stdio.h>
 
int NOD(int,int);
 
int main(){
    int n,i,a[120],delytel;
    
    delytel=NOD(a[0],a[1]); 
    for(i=2;i<n;i++)
    delytel=NOD(a[i],delytel);
    printf("delytel=%d",delytel);
    return 0;
}
 
int NOD(int x,int y){
    metka:
    if(x==0) return y;
    if(y==0) return x;
    (x>y)?  x%=y: y%=x;
    goto metka;
    }

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

  1. Включаем стандартную библиотеку ввода-вывода
  2. Объявляем функцию NOD, которая принимает два целых числа и находит их наибольший общий делитель
  3. В функции main объявляем переменные: — n - количество чисел в массиве ai - счётчик для цикла — a - массив для чисел — delytel - временная переменная для хранения НОД
  4. Вызываем функцию NOD для первых двух чисел из массива a и сохраняем результат в delytel
  5. В цикле от 2 до n-1 проходим по всем элементам массива a
  6. Для каждого числа в массиве вызываем функцию NOD с этим числом и текущим значением delytel
  7. Выводим значение delytel на экран
  8. Возвращаем 0 из функции main, чтобы указать, что программа успешно завершилась

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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