This exercise made me miss random access, and think, wow, you have to think differently about list processing. Not that I know the sieve method that well anyway. I guess I always figured haskell was just magically fast