Реализации алгоритмов/Алгоритм Евклида: различия между версиями

Нет описания правки
(Тщательное оформление программного кода, примечаний, языки расположены в алфавитном порядке, добавлена программа для ПМК)
else
b := b mod a;
gcdGCD := a + b
end;
</source>
b := c
end;
gcdGCD := a
end;
</source>
Деление с остатком, рекурсия:
<source lang="pascal">
function gcdGCD (a, b: T): T;
begin
if b = 0 then
gcd := a
else
gcdGCD := gcdGCD(b, a mod b)
end;
</source>
?GCD(a,b,x)
 
GCD(0, b, b) <-
GCD(a, 0, a) <-
GCD(a, b, x) <- a >= b, m is a mod b, GCD(m, b, x)
GCD(a, b, x) <- a < b, m is b mod a, GCD(a, m, x)
</codesource>
 
===[[w:SWI-Prolog]]===
Деление с остатком, рекурсия:
<source lang="prolog">
gcd(0, B, B).
gcd(A, 0, A).
 
gcd(A, B, X) :- A >= B, M is A mod B, gcd(M, B, X).
gcd(A, B, X) :- A < B, M is B mod A, gcd(A, M, X).
</source>
 
Анонимный участник