% Factorial of 0 is 1.
factorial(0, 1).
% Recursive case: N! = N * (N-1)!
factorial(N, Result) :-
N > 0,
factorial(N1, R1),
% GCD using Euclidean algorithm
gcd(X, 0, X) :- X > 0.
gcd(X, Y, Result) :-
Y > 0,
gcd(Y, Remainder, Result).
JSBGYWN0b3JpYWwgb2YgMCBpcyAxLgpmYWN0b3JpYWwoMCwgMSkuCiUgUmVjdXJzaXZlIGNhc2U6IE4hID0gTiAqIChOLTEpIQpmYWN0b3JpYWwoTiwgUmVzdWx0KSA6LQogICAgTiA+IDAsCiAgICBOMSBpcyBOIC0gMSwKICAgIGZhY3RvcmlhbChOMSwgUjEpLAogICAgUmVzdWx0IGlzIE4gKiBSMS4KCiUgR0NEIHVzaW5nIEV1Y2xpZGVhbiBhbGdvcml0aG0KZ2NkKFgsIDAsIFgpIDotIFggPiAwLgpnY2QoWCwgWSwgUmVzdWx0KSA6LQogICAgWSA+IDAsCiAgICBSZW1haW5kZXIgaXMgWCBtb2QgWSwKICAgIGdjZChZLCBSZW1haW5kZXIsIFJlc3VsdCku