gcd :: Int -> Int -> Int
-- testing 11 combinations of argument values
-- pruning with 0/0 rules
-- looking through 3 candidates of size 1
-- looking through 6 candidates of size 2
-- looking through 11 candidates of size 3
-- looking through 50 candidates of size 4
-- looking through 98 candidates of size 5
-- looking through 330 candidates of size 6
-- tested 172 candidates
gcd x 0  =  x
gcd x y  =  gcd y (x `mod` y)

