arXiv · 1811.09840
Three Euler's Sieves and a Fast Prime Generator (Functional Pearl)
Abstract
The Euler's Sieve refines the Sieve of Eratosthenes to compute prime numbers, by crossing off each non prime number just once. Euler's Sieve is considered hard to be faithfully and efficiently coded as a purely functional stream based program. We propose three Haskell programs implementing the Euler's Sieve, all based on the idea of generating just once each composite to be crossed off. Their faithfulness with respect to the Euler's Sieve is up to costly stream unions imposed by the sequential nature of streams. Our programs outperform classical naive stream based prime generators such as trial division, but they are asymptotically worse than the O'Neill `faithful' Sieve of Eratosthenes. To circumvent the bottleneck of union of streams, we integrate our techniques inside the O'Neill program, thus obtaining a fast prime generator based on the Euler's Sieve and priority queues.
Explore related subjects
Keep this discovery
Ivano Salvo, Agnese Pacifico. 2018-11-24. Three Euler's Sieves and a Fast Prime Generator (Functional Pearl). https://arxiv.org/abs/1811.09840
Cite the original work for its findings. Save a collection to share your selection of sources.