diff options
-rw-r--r-- | gcd.lisp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gcd.lisp b/gcd.lisp new file mode 100644 index 0000000..831bb31 --- /dev/null +++ b/gcd.lisp @@ -0,0 +1,24 @@ +(defun gcd2 (a b) + (if (= b 0) + a + (gcd2 b (mod a b)))) + +(defun gcdn (&rest numbers) + (reduce #'gcd2 (rest numbers) + :initial-value (first numbers))) + +; Command line access is different on different Lisps +(defun program-args () + (or + #+SBCL (rest *posix-argv*) + #+CLISP *args* + ;#+ECL (ext:command-args) + ;#+CMU extensions:*command-line-words* + ;#+LISPWORKS system:*line-arguments-list* + nil)) + +(write (apply #'gcdn + (map 'list #'parse-integer (program-args)) + )) +(fresh-line) + |