Sum multiples of 3 and 5: Difference between revisions
Content added Content deleted
(→{{header|Haskell}}: Slightly decluttered test expression, added type signatures , generalised map to fmap, applied hindent, hlint) |
|||
Line 1,181: | Line 1,181: | ||
<lang haskell>import Data.List (nub) |
<lang haskell>import Data.List (nub) |
||
sum35 :: Integral a => a -> a |
|||
⚫ | |||
sum35 n = sumMul n 3 + sumMul n 5 - sumMul n 15 |
sum35 n = sumMul n 3 + sumMul n 5 - sumMul n 15 |
||
sumMul :: Integral a => a -> a -> a |
|||
⚫ | |||
⚫ | |||
where |
|||
n1 = (n - 1) `div` f |
|||
⚫ | |||
pairLCM :: Integral a => [a] -> [a] |
|||
pairLCM [] = [] |
pairLCM [] = [] |
||
pairLCM (x:xs) = |
pairLCM (x:xs) = (lcm x <$> xs) ++ pairLCM xs |
||
sumMulS :: Integral a => a -> [a] -> a |
|||
sumMulS _ [] = 0 |
sumMulS _ [] = 0 |
||
sumMulS n s = sum |
sumMulS n s = sum (sumMul n <$> ss) - sumMulS n (pairLCM ss) |
||
where |
|||
ss = nub s |
|||
main |
main :: IO () |
||
main = |
|||
⚫ | |||
mapM_ |
|||
⚫ | |||
print |
print |
||
⚫ | |||
⚫ | |||
⚫ | |||
, sumMulS 1000 [3, 5] |
|||
⚫ | |||
]</lang> |
|||
{{out}} |
{{out}} |
||
<pre>233168 |
<pre>233168 |