Find the smallest number that can be expressed as the sum of 3 consecutive prime numbers, the sum of 77 consecutive prime numbers, the sum of 375 consecutive prime numbers, the sum of 729 consecutive prime numbers, and is itself a prime number.
For example, 41 is the smallest prime number that can be expressed as the sum of 3 consecutive primes (11 + 13 + 17 = 41) and the sum of 6 consecutive primes (2 + 3 + 5 + 7 + 11 + 13 = 41).
import Data.List(group) primos = 2 : filter (isPrime primos) [3,5..] isPrime (x:xs) y = x*x > y || (y `mod` x) /= 0 && isPrime xs y primos3 = somaPrimos 3 primos primos77 = somaPrimos 77 primos primos375 = somaPrimos 375 primos primos729 = somaPrimos 729 primos somaPrimos x ps = sum h : somaPrimos x t where h = take x ps t = tail ps a@(x:xs) <*> b@(y:ys) | x < y = x : (xs <*> b) | x == y = x : y : (xs <*> ys) | otherwise = y : (a <*> ys) juntaSomas = primos3 <*> primos77 <*> primos375 <*> primos729 menor = head . filter iguais . group where iguais = (4==) . length main = print $ menor juntaSomas
Por Betovsky.