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 == ).perfect