summaryrefslogtreecommitdiff
path: root/gcd.hs
blob: b044c8553de3d0db9d1e5dcdb6aa10cd53fbb459 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{-

Usage:

  $ runhaskell gcd.hs 22 11
  11

or:

  $ ghc gcd.hs -o gcd-hs
  $ ./gcd-hs 11 22 121
  11

-}
import System.Environment (getArgs)

gcd2 :: Integer -> Integer -> Integer
gcd2 a 0 = a
gcd2 a b = gcd2 b (a `rem` b)

gcdn :: [Integer] -> Integer
gcdn = foldl1 gcd2

str2int :: String -> Integer
str2int = read

main :: IO ()
main = do
  a <- getArgs
  print $ gcdn (map str2int a)