Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

this?

  sieve :: Integral a => a -> [a]
  sieve l =
      sieve' [2..l] []
    where
      sieve' (p:ns) ps =
            sieve' (filter (\x -> rem x p /= 0) ns) (p : ps)
      sieve' [] ps =
          reverse ps


The lazy sieve i have seen, taken from the paper mentioned in my post:

    primes = sieve [2..]
    sieve (p : xs) = p : sieve [x | x <− xs, x ‘mod‘ p > 0]




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: