diff options
author | pashev <pashev@light.(none)> | 2011-02-07 12:12:41 +0300 |
---|---|---|
committer | pashev <pashev@light.(none)> | 2011-02-07 12:12:41 +0300 |
commit | fdb4312b8ff26fdb38962a5972819c8d01f813e0 (patch) | |
tree | 7d80f568a0020d616f707949b1ce5c59baa0849e | |
parent | 11573800c0ac84fdb355b068dffe309569237b3b (diff) | |
download | gcd-fdb4312b8ff26fdb38962a5972819c8d01f813e0.tar.gz |
Prolog. No command line interface yet
-rw-r--r-- | gcd.pro | 35 |
1 files changed, 35 insertions, 0 deletions
@@ -0,0 +1,35 @@ +% Synopsis: +% # gplc gcd.pro +% # ./gcd +% | ?- gcd2(22, 121, 11). +% | ?- gcd2(22, 121, X). +% | ?- gcdn([22, 33], 11). +% | ?- gcdn([22, 33, 44], 11). +% | ?- gcdn([22], 11). +% | ?- gcdn([22, 33, 44], B). + + +% 1st number, 2nd number, GCD + +% It is true that GCD of A and 0 is A +% (The fact is GCD of A and 0 is A) +gcd2(A, 0, A). + +% It is true that G is GCD of A and B +% when A>0 and B>0 and G is GCD of B and A % B +gcd2(A, B, G) :- A>0, B>0, N is mod(A, B), gcd2(B, N, G). + +gcdn(A, [], A). +gcdn(A, [B|Bs], G) :- gcd2(A, B, N), gcdn(N, Bs, G). +gcdn([A|As], G) :- gcdn(A, As, G). + +% http://www.gprolog.org/manual/html_node/gprolog008.html#toc9 +%:- initialization(main). + + +% http://www.fraber.de/bap/bap76.html +%main :- +% argument_list(Args), +% gcdn(Numbers, G), +% write(G), nl. + |