Определить наибольший общий делитель - PascalABC.NET
Формулировка задачи:
Определить наибольший общий делитель трех введенных с клавиатуры чисел или вывести сообщение о его отсутствии, если такой делитель равен 1.
Решение задачи: «Определить наибольший общий делитель»
textual
Листинг программы
var a,b,c,d:longint;
function NOD(x,y:longint):longint;
begin
if x<>0 then NOD:=NOD(y mod x,x) else NOD:=y;
end;
begin
readln(a,b,c);
d:= NOD(c,NOD(a,b));
if d = 1 then write('нод отсутствует') else writeln(d);
end.
Объяснение кода листинга программы
- Объявлены четыре переменные типа longint: a, b, c, d.
- Определена функция NOD(x,y:longint):longint.
- Функция NOD рекурсивно находит наибольший общий делитель (НОД) двух чисел.
- Если первый аргумент функции NOD не равен нулю, то НОД вычисляется рекурсивно для второго аргумента и результата модуляции первого аргумента вторым.
- Если первый аргумент функции NOD равен нулю, то второй аргумент функции NOD присваивается первому аргументу.
- В основной части программы происходит считывание трёх чисел в переменные a, b, c.
- В переменную d записывается результат вызова функции NOD с аргументами c и NOD(a,b).
- Если d не равно единице, то выводится значение переменной d.
- Если d равно единице, то выводится сообщение
нод отсутствует.