summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor <pashev.igor@gmail.com>2011-01-23 22:18:58 +0300
committerIgor <pashev.igor@gmail.com>2011-01-23 22:18:58 +0300
commit4f174764f3e4d12747e9bc2938fb43aafcf5358c (patch)
treecb662a5f1a38520b2d9ac76489dcc479f200c61f
parentb1babe9724561c20bc9a63a60b1bd590f9d5fde8 (diff)
downloadgcd-4f174764f3e4d12747e9bc2938fb43aafcf5358c.tar.gz
FreePascal
-rw-r--r--gcd.pas36
1 files changed, 36 insertions, 0 deletions
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 <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.
+