22 lines
474 B
Haskell
22 lines
474 B
Haskell
pytr :: Int -> [(Bool, Int, Int, Int)]
|
|
pytr n =
|
|
filter
|
|
(\(_, a, b, c) -> a + b + c <= n)
|
|
[ (prim a b c, a, b, c)
|
|
| a <- xs
|
|
, b <- drop a xs
|
|
, c <- drop b xs
|
|
, a ^ 2 + b ^ 2 == c ^ 2 ]
|
|
where
|
|
xs = [1 .. n]
|
|
prim a b _ = gcd a b == 1
|
|
|
|
main :: IO ()
|
|
main =
|
|
putStrLn $
|
|
"Up to 100 there are " ++
|
|
show (length xs) ++
|
|
" triples, of which " ++
|
|
show (length $ filter (\(x, _, _, _) -> x) xs) ++ " are primitive."
|
|
where
|
|
xs = pytr 100
|