diff options
author | Igor <pashev.igor@gmail.com> | 2011-01-23 22:18:58 +0300 |
---|---|---|
committer | Igor <pashev.igor@gmail.com> | 2011-01-23 22:18:58 +0300 |
commit | 4f174764f3e4d12747e9bc2938fb43aafcf5358c (patch) | |
tree | cb662a5f1a38520b2d9ac76489dcc479f200c61f /gcd.pas | |
parent | b1babe9724561c20bc9a63a60b1bd590f9d5fde8 (diff) | |
download | gcd-4f174764f3e4d12747e9bc2938fb43aafcf5358c.tar.gz |
FreePascal
Diffstat (limited to 'gcd.pas')
-rw-r--r-- | gcd.pas | 36 |
1 files changed, 36 insertions, 0 deletions
@@ -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 <http://wiki.freepascal.org/for-in_loop> } + 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. + |