2007-11-17

ユークリッドの互除法

ユークリッドの互除法のような簡単なものだと、さすがにHaskellもPythonもそんなに差はなく、どちらもきれいに書ける。

Haskell

euc m 0 = m
euc m n | m < n = euc n m
| m `mod` n == 0 = n
| otherwise = euc n $ m `mod` n

main = do print $ euc 1071 1029


Python
def euc(m, n):
if m < n: return euc(n, m)
if n == 0: return m
if m % n == 0 : return n
return euc(n, m % n)

print euc(1071, 1029)