diff options
author | Igor Pashev <pashev.igor@gmail.com> | 2017-07-09 10:41:20 +0300 |
---|---|---|
committer | Igor Pashev <pashev.igor@gmail.com> | 2017-07-09 10:41:20 +0300 |
commit | 199541b289b2ad9a43e99f70446ad491d71d0337 (patch) | |
tree | 5a0553ff1436d896c5be7372ef41c2e6ebb3d8db /gcd.ml | |
parent | 9f86fb4b7d33e07ec2455dd5dcc0de07b5aad495 (diff) | |
download | gcd-199541b289b2ad9a43e99f70446ad491d71d0337.tar.gz |
OCaml
Diffstat (limited to 'gcd.ml')
-rw-r--r-- | gcd.ml | 33 |
1 files changed, 33 insertions, 0 deletions
@@ -0,0 +1,33 @@ +(* + +OCaml: http://ocaml.org/ + +Usage: + + $ ocamlopt gcd.ml -o gcd-ml + $ ./gcd-ml 11 22 44 121 + 11 + +or: + + $ ocaml gcd.ml 11 22 44 121 + 11 + +*) + + +(* GCD of two numbers *) +let rec gcd a b = + match b with + | 0 -> a + | b -> gcd b (a mod b) +;; + +(* GCD of several numbers *) +let gcdn = List.fold_left gcd 0 ;; + +let args = List.tl (Array.to_list Sys.argv) ;; +let nums = List.map int_of_string args ;; + +Printf.printf "%d\n" (gcdn nums) ;; + |