Discover how a simple marking trick can find all primes faster than checking one by one!
Why Sieve of Eratosthenes Find All Primes in DSA Typescript?
Imagine you want to find all prime numbers up to 100 by checking each number one by one and testing if it is divisible by any smaller number.
This means you try dividing 2, 3, 4, 5, and so on for every number up to 100.
This manual method is very slow and tiring because you repeat many checks again and again.
It is easy to make mistakes and miss some numbers or do extra work.
For large numbers, this approach takes too long and wastes a lot of time.
The Sieve of Eratosthenes is a smart way to find all primes up to a limit by marking multiples of each prime as not prime.
It quickly removes many numbers at once, so you don't check each number repeatedly.
This method is fast, simple, and reduces errors by following clear steps.
for (let num = 2; num <= 100; num++) { let isPrime = true; for (let div = 2; div < num; div++) { if (num % div === 0) { isPrime = false; break; } } if (isPrime) console.log(num); }
const limit = 100; const sieve = new Array(limit + 1).fill(true); sieve[0] = false; sieve[1] = false; for (let i = 2; i * i <= limit; i++) { if (sieve[i]) { for (let j = i * i; j <= limit; j += i) { sieve[j] = false; } } } for (let i = 2; i <= limit; i++) { if (sieve[i]) console.log(i); }
This method enables you to quickly find all prime numbers up to very large limits without checking each number individually.
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 checking is slow and repeats work.
Sieve of Eratosthenes marks multiples to remove many numbers at once.
This method is fast, simple, and useful for large ranges.
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 the limit.Final Answer:
To find all prime numbers up to a given limit -> Option CQuick Check:
Prime finding = To find all prime numbers up to a given limit [OK]
- Confusing with sorting algorithms
- Thinking it finds divisors or reverses strings
- Assuming it works for negative numbers
isPrime of size n+1 with all values set to true?Solution
Step 1: Check array size and initialization
We need an array of size n+1 to include index n, filled with true values.Step 2: Verify TypeScript syntax
Usingnew Array(n + 1).fill(true)correctly creates and fills the array.Final Answer:
const isPrime = new Array(n + 1).fill(true); -> Option BQuick Check:
Correct array init = const isPrime = new Array(n + 1).fill(true); [OK]
- Using wrong size (n instead of n+1)
- Filling with false instead of true
- Incorrect syntax like Boolean[n + 1]
isPrime after running the Sieve of Eratosthenes for n = 10? (true means prime, false means not prime)Solution
Step 1: Initialize array for n=10
Indices 0 and 1 are not prime, so false. Indices 2 to 10 start as true.Step 2: Mark multiples of primes as false
Multiples of 2: 4,6,8,10 -> false; multiples of 3: 6,9 -> false; others remain true.Final Answer:
[false, false, true, true, false, true, false, true, false, false, false] -> Option AQuick Check:
Prime flags for 2-10 = [false, false, true, true, false, true, false, true, false, false, false] [OK]
- Marking 1 as prime
- Not marking multiples correctly
- Confusing true/false meanings
const n = 10;
const isPrime = new Array(n + 1).fill(true);
isPrime[0] = false;
isPrime[1] = false;
for (let i = 2; i <= n; i++) {
if (isPrime[i]) {
for (let j = i * 2; j <= n; j += i) {
isPrime[j] = false;
}
}
}
console.log(isPrime);
What is the main issue with this code?Solution
Step 1: Analyze inner loop start
Starting from i*2 marks some multiples multiple times, causing inefficiency.Step 2: Correct starting point for marking multiples
Starting from i*i is optimal because smaller multiples were marked by smaller primes.Final Answer:
The inner loop should start from i * i instead of i * 2 -> Option AQuick Check:
Start inner loop at i*i for efficiency = The inner loop should start from i * i instead of i * 2 [OK]
- Starting inner loop at i*2 wastes time
- Incorrect array size assumptions
- Wrong initialization of 0 and 1 as prime
n = 30 using the Sieve of Eratosthenes. After running the sieve, how many prime numbers will be found?Solution
Step 1: List primes up to 30
Primes are 2,3,5,7,11,13,17,19,23,29.Step 2: Count the primes
Counting these primes gives 10 primes up to 30.Final Answer:
10 -> Option DQuick Check:
Count primes ≤ 30 = 10 [OK]
- Including 1 as prime
- Counting primes beyond n
- Miscounting primes between 20 and 30
Ready to prove it?
Pass the test and this pattern moves unknown
