summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Pashev <pashev.igor@gmail.com>2022-11-10 11:28:52 +0200
committerIgor Pashev <pashev.igor@gmail.com>2022-11-11 09:15:47 +0200
commitf8b0cf38d1f62e3f012a086513aa73952fbb9b3b (patch)
tree6712b9f1de9ffc2d136b5195c2405e6cff879423
parent5fe75110fe3e9d22205cba089d546e91b1156846 (diff)
downloadgcd-f8b0cf38d1f62e3f012a086513aa73952fbb9b3b.tar.gz
Add Erlang
-rw-r--r--gcd.erl28
1 files changed, 28 insertions, 0 deletions
diff --git a/gcd.erl b/gcd.erl
new file mode 100644
index 0000000..484bd9e
--- /dev/null
+++ b/gcd.erl
@@ -0,0 +1,28 @@
+% Synopsis:
+%
+% $ escript gcd.erl 11 22 33 121
+%
+% or
+%
+% $ erl -compile gcd / erlc gcd.erl
+% $ erl -noshell -run gcd main 11 22 33 121
+%
+
+-module(gcd).
+-export([main/1, main/0]).
+-mode(compile).
+
+gcd2(A, 0) -> A;
+gcd2(A, B) -> gcd2(B, A rem B).
+
+gcdn(Nums) ->
+ lists:foldl(fun gcd2/2, 0, Nums).
+
+main() -> init:stop().
+
+main([]) -> init:stop();
+main(Args) ->
+ Nums = lists:map(fun erlang:list_to_integer/1, Args),
+ io:format("~w\n", [gcdn(Nums)]),
+ init:stop().
+