summaryrefslogtreecommitdiff
path: root/gcd.hs
blob: e868a1be5cedc8bce1cf695e7425e168fc7996bd (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
{-

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 :: Integral a => a -> a -> a
gcd2 a 0 = a
gcd2 a b = gcd2 b (a `rem` b)

gcdn :: Integral a => [a] -> a
gcdn = foldl1 gcd2

out :: [String] -> IO ()
out [] = return ()
out a = print (gcdn (map read a) :: Integer)

main :: IO ()
main = getArgs >>= out