euler/Problem050.hs

20 lines
645 B
Haskell

-- Which prime, below one-million, can be written as the sum of the most
-- consecutive primes?
import Euler
intersectOn' :: (a -> b -> Ordering) -> [a] -> [b] -> [b]
intersectOn' _ [] _ = []
intersectOn' _ _ [] = []
intersectOn' f (x:xs) (y:ys) = case f x y of
LT -> intersectOn' f xs (y:ys)
EQ -> y : intersectOn' f xs ys
GT -> intersectOn' f (x:xs) ys
primeSums = concat $
map (intersectOn' (\p (_,q) -> compare p q) primes) $
map (zip [1..] . takeWhile (< 1000000) . tail . scanl' (+) 0) $
tails $ takeWhile (< 50000) $ primes
main = print $ snd $ maximumBy (compare `on` fst) $ primeSums