20 lines
645 B
Haskell
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
|