Найти наибольший общий делитель для заданной последовательности чисел - 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; }
Объяснение кода листинга программы
- Включаем стандартную библиотеку ввода-вывода
- Объявляем функцию
NOD
, которая принимает два целых числа и находит их наибольший общий делитель - В функции
main
объявляем переменные: —n
- количество чисел в массивеa
—i
- счётчик для цикла —a
- массив для чисел —delytel
- временная переменная для хранения НОД - Вызываем функцию
NOD
для первых двух чисел из массиваa
и сохраняем результат вdelytel
- В цикле от 2 до
n-1
проходим по всем элементам массиваa
- Для каждого числа в массиве вызываем функцию
NOD
с этим числом и текущим значениемdelytel
- Выводим значение
delytel
на экран - Возвращаем 0 из функции
main
, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д