Sum multiples of 3 and 5: Difference between revisions

m
(→‎JS ES6: Tidied code, added formatting for output.)
Line 1,505:
<lang haskell>import Data.List (nub)
 
sum35 :: Integral a => aInteger -> aInteger
sum35 n =
sum35 n = sumMul n 3 + sumMul n 5 - sumMul n 15
let f = sumMul n
in f 3 + f 5 - f 15
 
sumMul :: Integral a => aInteger -> aInteger -> aInteger
sumMul n f = f * n1 * (n1 + 1) `div` 2
let n1 = (n - 1) `div` f
where
in f * n1 =* (nn1 -+ 1) `div` f2
 
-- Functions below are forFor variable length inputs:
pairLCM :: Integral a => [aInteger] -> [aInteger]
 
pairLCM :: Integral a => [a] -> [a]
pairLCM [] = []
pairLCM (x:xs) = (lcm x <$> xs) ++ pairLCM xs
 
sumMulS :: Integral a => aInteger -> [aInteger] -> aInteger
sumMulS _ [] = 0
sumMulS n s = (((-) . sum . fmap (sumMul n)) <$*> ss) - (sumMulS n (. pairLCM)) (nub sss)
where
ss = nub s
 
main :: IO ()
9,655

edits