% Aritmetikai muveletek a prologban: +, -, *, //, mod
muveletek(A,B):- Ossz is A+B,  OText=A+B,  write(OText),  write(=), write(Ossz), nl,
                 Kul  is A-B,  KText=A-B,  write(KText),  write(=), write(Kul), nl,
                 Szorz is A*B, SzText=A*B, write(SzText), write(=), write(Szorz), nl,
                 Hany is A//B, HText=A/B,  write(HText),  write(=), write(Hany), nl,
                 Mod is A mod B, MText=A mod B,  write(MText),  write(=), write(Mod), nl.

% A
write/1 utasításról és a különböző egyenlőségjelekről itt olvashatsz.

%----------------------------------------------------------------------------------------

% lnko(A,B,C): C az A és B legnagyobb közös osztója.
% Kiszámítására az Euklideszi algoritmust alkalmazzuk.
% X mod Y az X szám Y-nal vett osztási maradékát számítja ki.

lnko(A,0,A).
lnko(A,B,C):- B>0, M is A mod B, lnko(B,M,C).

% Az első szabálynak ugyanaz a hatása, mintha a
%
lnko(A,0,C):- C is A.
% szabályt alkalmaztuk volna. Miért?