fork(1) download
  1. import Data.List
  2.  
  3. -- funcion que toma dos listas ordenadas y sin repetidos, y retorna una lista
  4. -- con los elementos de la primera que no estan en la segunda
  5. minus (x:xs) (y:ys) = case (compare x y) of
  6. LT -> x : minus xs (y:ys)
  7. EQ -> minus xs ys
  8. GT -> minus (x:xs) ys
  9.  
  10. -- [2..] representa la lista infinita: [2,3,4,5,...]
  11. -- erathos es la implenetación de la criba de erathostenes
  12. primes = eratos [2..]
  13. where
  14. eratos [] = []
  15. eratos (p:xs) = p : eratos (minus xs [p, p+p..])
  16.  
  17. -- primes representa la lista infinita de todos los primos, pero como
  18. -- "take 20 primes" dice que solo se van a utilizar los 20 primeros, haskell
  19. -- solo calcula los primeros 20
  20. main = print $ (take 20 primes)
Success #stdin #stdout 0s 4700KB
stdin
Standard input is empty
stdout
[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71]