FIX chr_identifier related bugs and performance issues
[chr.git] / Examples / gcd.chr
blob4406c19e6f3951c4297b233458805b98518f01ef
1 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2 %%
3 %% 980202, 980311 Thom Fruehwirth, LMU
4 %% computes greatest common divisor of positive numbers written each as gcd(N)
5 %%
6 %% ported to hProlog by Tom Schrijvers
8 :- module(gcd,[]).
10 :- use_module( library(chr)).
12 :- constraints gcd/1.
14 gcd(0) <=> true.
15 %%gcd(N) \ gcd(M) <=> N=<M | L is M-N, gcd(L).
16 gcd(N) \ gcd(M) <=> N=<M | L is M mod N, gcd(L).  % faster variant
19 %% Sample queries
21 gcd(2),gcd(3).
23 gcd(1.5),gcd(2.5).
25 X is 37*11*11*7*3, Y is 11*7*5*3, Z is 37*11*5,gcd(X),gcd(Y),gcd(Z).
28