24 lines
509 B
Haskell
24 lines
509 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
|