Problem 218

218 Perfect right-angled triangles
Problem 218 - Project Euler
ようするに,原始ピタゴラス数に関する問題.
適当にコード書いて,適当に走らせ,予測をして入力したらあっていた.
適当なコードが↓

import Data.List
import Control.Monad

pythagoras u = do n <- [1..u]
                  m <- [n+1..floor.sqrt.fromIntegral $ u - n^2]
                  guard $ even m || even n && gcd m n == 1
                  return (m^2-n^2, 2*m*n, m^2+n^2)

perfect u = do (m ,n , _) <- pythagoras u
               return (abs $ m^2-n^2, 2*m*n, m^2+n^2)

superPerfect = filter (\(a, b,_) -> mod (a*b) 168 == 0).perfect