What if you could find all primes up to 1 million without checking each number one by one?
Why Sieve of Eratosthenes Find All Primes in DSA Java?
Imagine you want to find all prime numbers up to 100 by checking each number one by one, dividing it by all smaller numbers to see if it has any divisors.
This manual method is very slow and tiring because you have to do many repeated checks. It's easy to make mistakes and miss some primes or waste time checking unnecessary numbers.
The Sieve of Eratosthenes is like a smart filter that quickly marks all non-prime numbers by crossing out multiples of each prime, so you only keep the primes without checking each number many times.
for (int num = 2; num <= 100; num++) { boolean isPrime = true; for (int div = 2; div < num; div++) { if (num % div == 0) { isPrime = false; break; } } if (isPrime) System.out.println(num); }
boolean[] isPrime = new boolean[101]; Arrays.fill(isPrime, true); isPrime[0] = false; isPrime[1] = false; for (int i = 2; i * i <= 100; i++) { if (isPrime[i]) { for (int j = i * i; j <= 100; j += i) { isPrime[j] = false; } } } for (int i = 2; i <= 100; i++) { if (isPrime[i]) System.out.println(i); }
This method lets you find all prime numbers up to a large limit quickly and efficiently, saving time and effort.
Finding prime numbers fast is important in computer security, like creating keys for encrypting messages so only the right people can read them.
Manual prime checks are slow and repetitive.
Sieve of Eratosthenes marks multiples to find primes efficiently.
It enables fast prime number generation for many applications.
Practice
Sieve of Eratosthenes algorithm?Solution
Step 1: Understand the algorithm's goal
The Sieve of Eratosthenes is designed to identify prime numbers efficiently.Step 2: Recognize the output
It marks multiples of primes as non-prime, leaving primes unmarked up to a limit.Final Answer:
To find all prime numbers up to a given limit -> Option AQuick Check:
Prime finding = To find all prime numbers up to a given limit [OK]
- Confusing with sorting algorithms
- Thinking it finds divisors
- Assuming it manipulates strings
n?Solution
Step 1: Check array size for indexing
We need size n+1 to include number n as index.Step 2: Initialize all as true
All numbers start as prime candidates, so fill with true.Final Answer:
boolean[] prime = new boolean[n+1]; Arrays.fill(prime, true); -> Option BQuick Check:
Array size n+1 and true fill = boolean[] prime = new boolean[n+1]; Arrays.fill(prime, true); [OK]
- Using size n instead of n+1
- Filling array with false initially
- Confusing array size and indexing
n = 10?
int n = 10;
boolean[] prime = new boolean[n+1];
Arrays.fill(prime, true);
prime[0] = false; prime[1] = false;
for (int p = 2; p * p <= n; p++) {
if (prime[p]) {
for (int i = p * p; i <= n; i += p) {
prime[i] = false;
}
}
}
for (int i = 2; i <= n; i++) {
if (prime[i]) System.out.print(i + " ");
}Solution
Step 1: Initialize primes and mark 0,1 false
prime[0] and prime[1] are false; others true initially.Step 2: Mark multiples of primes false
Multiples of 2 (4,6,8,10) and 3 (9) are marked false.Step 3: Print primes from 2 to 10
Remaining true indices are 2,3,5,7.Final Answer:
2 3 5 7 -> Option AQuick Check:
Primes up to 10 = 2 3 5 7 [OK]
- Including 1 as prime
- Printing non-prime numbers like 4 or 9
- Not starting inner loop from p*p
int n = 20;
boolean[] prime = new boolean[n+1];
Arrays.fill(prime, true);
prime[0] = false; prime[1] = false;
for (int p = 2; p <= n; p++) {
if (prime[p]) {
for (int i = p * 2; i <= n; i += p) {
prime[i] = false;
}
}
}Solution
Step 1: Check outer loop range
Outer loop runs from 2 to n, but it is enough to run up to sqrt(n) for efficiency.Step 2: Confirm inner loop start and initialization
Inner loop correctly starts at p*2; prime[0] and prime[1] are correctly false; array filled with true.Final Answer:
The outer loop should run only up to sqrt(n), not n -> Option CQuick Check:
Loop limit optimization = The outer loop should run only up to sqrt(n), not n [OK]
- Running outer loop up to n wastes time
- Starting inner loop incorrectly
- Wrong initialization of prime array
n = 50 using the Sieve of Eratosthenes. After running the sieve, how many prime numbers will be found?Solution
Step 1: List primes up to 50
Primes are 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47 (total 15).Step 2: Count primes carefully
Counting again: 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47 = 15 primes.Step 3: Verify options
15 says 15, 16 says 16; correct count is 15.Final Answer:
15 -> Option DQuick Check:
Count primes ≤ 50 = 15 [OK]
- Counting 1 as prime
- Miscounting primes between 40 and 50
- Assuming 16 primes instead of 15
Ready to prove it?
Pass the test and this pattern moves unknown
