From 4f174764f3e4d12747e9bc2938fb43aafcf5358c Mon Sep 17 00:00:00 2001 From: Igor Date: Sun, 23 Jan 2011 22:18:58 +0300 Subject: FreePascal --- gcd.pas | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 gcd.pas (limited to 'gcd.pas') diff --git a/gcd.pas b/gcd.pas new file mode 100644 index 0000000..20a43f7 --- /dev/null +++ b/gcd.pas @@ -0,0 +1,36 @@ +{Tested with FreePascal 2.4.0} + +program GCD(output); +uses sysutils; {StrToInt} + +function gcd2(a: integer; b: integer): integer; +var c: integer; +begin + while b <> 0 do + begin + c := b; + b := a mod b; + a := c; + end; + gcd2 := a; +end; + +function gcdn(n: array of integer): integer; +var i: integer; +begin + gcdn := n[0]; + for i := 1 to High(n) do {See also } + gcdn := gcd2(gcdn, n[i]); +end; + + +var + n: array of integer; + i: integer; +begin + SetLength(n, ParamCount); + for i := 1 to ParamCount do + n[i-1] := StrToInt(ParamStr(i)); + Writeln(gcdn(n)) +end. + -- cgit v1.2.3