Тема: Рекурсія. Алгоритм Евкліда
Знайти НСД(найбільший спільний дільник) двох натуральних чисел a і b за алгоритмом Евкліда.
Остачу від ділення треба знайти через віднімання.
Ось я написав цей блок програми (пошук остачі через віднімання):
type natur=1..maxint;
procedure NSD(n,m:natur;var r:natur);
begin
if n=m then r:=n
else if n>m then NSD(n-m,m,r)
else NSD(m-n,n,r);
end;
Ось написав програму, де остача від ділення знаходиться через mod.
var a, b, answer: longint;
function gcd(m, n: longint): longint;
var modulo: longint;
begin
modulo := m mod n;
if modulo = 0 then
gcd := n
else
gcd := gcd (n, modulo)
end;
begin
writeln('Введіть 2 натуральних числа');
readln(a, b);
answer := gcd(a, b);
writeln(answer);
readln
end.
Треба замінити пошук через mod (в коді 2) пошуком через віднімання (кодом 1)