From 199541b289b2ad9a43e99f70446ad491d71d0337 Mon Sep 17 00:00:00 2001 From: Igor Pashev Date: Sun, 9 Jul 2017 10:41:20 +0300 Subject: OCaml --- gcd.ml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 gcd.ml diff --git a/gcd.ml b/gcd.ml new file mode 100644 index 0000000..85d64d5 --- /dev/null +++ b/gcd.ml @@ -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) ;; + -- cgit v1.2.3