En Haskell, llevaría menos de 15, con comentarios y buen estilo incluídos:
module Primes where
-- Función que devuelve los n primeros números primos
primes :: Int -> [Int]
primes n = take n allThePrimes
-- Lista infinita de números primos
allThePrimes :: [Int]
allThePrimes = sieve (iterate (+1) 2)
-- Implementación de la Criba de Eratóstenes
sieve :: [Int] -> [Int]
sieve (x:xs) = x:sieve (filter (notMultiple x) xs)
where notMultiple x y = y `mod` x /= 0


0 comentarios:
Publicar un comentario en la entrada