Напишите процедуру для нахождения наибольшего общего делителя двух чисел.Используйте ее для нахождения наибольшего общего делителя элементов 3х массивов. Массивы ввести и вывести при помощи процедур
Ответы
function Nod(a, b: integer): integer;
begin
while b <> 0 do
begin
a := a mod b;
Swap(a, b)
end;
Result := a
end;
procedure ArrIn(var a: array of integer) := a := ReadArrInteger(a.Length);
procedure ArrOut(a: array of integer) := a.Println;
function NodArr(a: array of integer): integer;
begin
var n := a.Length;
if n = 1 then
Result := a[0]
else
begin
Result := Nod(a[0], a[1]);
for var i := 2 to n - 1 do
Result := Nod(a[i], Result);
end;
end;
begin
var n := ReadInteger('Число элементов в массиве 1:');
var a := new integer[n];
Writeln('Введите элементы массива 1');
ArrIn(a);
Writeln('введены элементы:');
ArrOut(a);
Writeln('НОД элементов равен ', NodArr(a));
n := ReadInteger('Число элементов в массиве 2:');
SetLength(a, n);
Writeln('Введите элементы массива 2');
ArrIn(a);
Writeln('введены элементы:');
ArrOut(a);
Writeln('НОД элементов равен ', NodArr(a));
n := ReadInteger('Число элементов в массиве 3:');
SetLength(a, n);
Writeln('Введите элементы массива 3');
ArrIn(a);
Writeln('введены элементы:');
ArrOut(a);
Writeln('НОД элементов равен ', NodArr(a));
end.