Computing π(N): An elementary approach in O(N) time
Abstract
We present an efficient and elementary algorithm for computing the number of primes up to N in O( N) time, improving upon the existing combinatorial methods that require O(N 2/3) time. Our method has a similar time complexity to the analytical approach to prime counting, while avoiding complex analysis and the use of arbitrary precision complex numbers. While the most time-efficient version of our algorithm requires O( N) space, we present a continuous space-time trade-off, showing, e.g., how to reduce the space complexity to O([3]N) while slightly increasing the time complexity to O(N8/15). We apply our techniques to improve the state-of-the-art complexity of elementary algorithms for computing other number-theoretic functions, such as the the Mertens function (in O( N) time compared to the known O(N0.6)), summing Euler's totient function, counting square-free numbers and summing primes. Implementation code is provided.
Turn this paper into a full lesson
ArcXiv compiles a staged curriculum from this paper: 8-12 lessons across beginner → advanced, synthesised section guides, visuals, flashcards, a quiz, exercises, and on-demand deep dives per section. Grounded in the abstract, never invented.