From d39ce2868483a08ef96cecf0e1d8cd95b64042bf Mon Sep 17 00:00:00 2001 From: Igor Pashev Date: Wed, 16 Nov 2022 19:26:49 +0200 Subject: Add D --- gcd.d | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 gcd.d diff --git a/gcd.d b/gcd.d new file mode 100644 index 0000000..b9599e4 --- /dev/null +++ b/gcd.d @@ -0,0 +1,35 @@ +// D: https://dlang.org +// +// Synopsis: +// +// GNU D Compiler (tested GCC 12): +// $ gdc gcd.d -o gcd-d +// $ ./gcd-d 11 22 33 121 +// +// LLVM D Compiler (tested LDC2 1.24.0): +// $ ldc2 --run gcd 11 22 33 121 +// or +// $ ldc2 --of=gcd-d gcd.d +// $ ./gcd-d 11 22 33 121 +// + +import std.algorithm: map, reduce; +import std.conv: to; +import std.stdio: writeln; + +ulong gcd2(ulong a, ulong b) { + ulong c; + while (b > 0) { + c = b; + b = a % b; + a = c; + } + return c; +} + +void main(string[] args) { + if (args.length > 1) { + auto gcd = args[1..$].map!(to!ulong).reduce!gcd2(); + writeln(gcd); + } +} -- cgit v1.2.3