The classical Sieve of Eratosthenes algorithm takes O(N log (log N)) time to find all prime numbers less than N. In this article, a modified Sieve is discussed that works in O(N) time.
Given a number N, print all prime numbers smaller than N Input : int N = 15 Output : 2 3 5 7 11 13 Input : int N = 20 Output : 2 3 5 7 11 13 17 19
Manipulated Sieve of Eratosthenes algorithm works as following:
For every number i where i varies from 2 to N-1: Check if the number is prime. If the number is prime, store it in prime array. For every prime numbers j less than or equal to the smallest prime factor p of i: Mark all numbers j*p as non_prime. Mark smallest prime factor of j*p as j
Below is implementation of above idea.
2 3 5 7 11
isPrime = isPrime = 0 After i = 2 iteration : isPrime [F, F, T, T, F, T, T, T] SPF [0, 0, 2, 0, 2, 0, 0, 0] index 0 1 2 3 4 5 6 7 After i = 3 iteration : isPrime [F, F, T, T, F, T, F, T, T, F ] SPF [0, 0, 2, 3, 2, 0, 2, 0, 0, 3 ] index 0 1 2 3 4 5 6 7 8 9 After i = 4 iteration : isPrime [F, F, T, T, F, T, F, T, F, F] SPF [0, 0, 2, 3, 2, 0, 2, 0, 2, 3] index 0 1 2 3 4 5 6 7 8 9
This article is contributed by Divyanshu Srivastava and Nishant Singh. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.
- Sieve of Eratosthenes
- Sum of all Primes in a given range using Sieve of Eratosthenes
- Check for balanced parentheses in an expression | O(1) space | O(N^2) time complexity
- Sieve of Atkin
- Bitwise Sieve
- Segmented Sieve
- Segmented Sieve (Print Primes in a Range)
- Sieve of Sundaram to print all primes smaller than n
- Prime Factorization using Sieve O(log n) for multiple queries
- Number of unmarked integers in a special sieve
- Minimum time to reach a point with +t and -t moves at time t
- Sum of first n odd numbers in O(1) Complexity
- Complexity Analysis of Binary Search
- Time taken per hour for stoppage of Car
- Calculate speed, distance and time