summaryrefslogtreecommitdiff
path: root/gcd.scala
blob: 69f86a6b30012f4aa38915c2acc72a1d520342a6 (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
/*
 Synopsis:
 
 # scalac gcd.scala
 # scala gcd 11 22 33 121

 // prints 11

*/
object gcd {
    def gcd2(a: Int, b: Int): Int = b match {
        case 0 => a
        case _ => gcd2(b, a % b)
    }

    def main(args: Array[String]) {
        try {
            val numbers = args map Integer.parseInt
            println(numbers.foldRight(0)((a, b) => gcd2(a, b)))
        } catch {
           case e: NumberFormatException => println("Not a number")
        }
    }
}