Bird
Raised Fist0
DSA C++programming~5 mins

Sieve of Eratosthenes Find All Primes in DSA C++ - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main idea behind the Sieve of Eratosthenes?
It is a method to find all prime numbers up to a given number by repeatedly marking the multiples of each prime number starting from 2.
Click to reveal answer
intermediate
Why do we start marking multiples from the square of the prime in the Sieve of Eratosthenes?
Because all smaller multiples of that prime have already been marked by smaller primes, so starting from the square avoids redundant work.
Click to reveal answer
beginner
In the Sieve of Eratosthenes, what does a 'true' value in the boolean array represent?
It means the number at that index is currently considered prime (not marked as multiple of any smaller prime).
Click to reveal answer
intermediate
What is the time complexity of the Sieve of Eratosthenes algorithm?
The time complexity is O(n log log n), which is efficient for finding primes up to large numbers.
Click to reveal answer
beginner
How does the Sieve of Eratosthenes help in real-life scenarios?
It helps quickly find prime numbers which are useful in cryptography, hashing, and number theory problems.
Click to reveal answer
What is the first prime number used in the Sieve of Eratosthenes?
A3
B1
C2
D0
When marking multiples of a prime p, from which number do we start?
Ap * p
B2 * p
Cp + 1
D1
What does a 'false' value in the sieve array mean after processing?
AThe number is prime
BThe number is negative
CThe number is zero
DThe number is composite (not prime)
Which data structure is commonly used to implement the Sieve of Eratosthenes?
ABoolean array
BLinked list
CStack
DQueue
What is the main benefit of the Sieve of Eratosthenes compared to checking each number individually?
AIt uses less memory
BIt is faster for large ranges
CIt finds only even primes
DIt works only for small numbers
Explain step-by-step how the Sieve of Eratosthenes finds all prime numbers up to a given number n.
Think about crossing out multiples starting from the smallest prime.
You got /6 concepts.
    Describe why the Sieve of Eratosthenes is more efficient than checking each number for primality individually.
    Focus on how marking multiples reduces work.
    You got /5 concepts.

      Practice

      (1/5)
      1. What is the main purpose of the Sieve of Eratosthenes algorithm?
      easy
      A. To calculate the factorial of a number
      B. To sort an array of numbers
      C. To find the greatest common divisor of two numbers
      D. To find all prime numbers up to a given limit

      Solution

      1. Step 1: Understand the algorithm's goal

        The Sieve of Eratosthenes is designed to identify prime numbers efficiently.
      2. Step 2: Recognize the output

        It marks multiples of primes as non-prime, leaving primes unmarked up to the limit.
      3. Final Answer:

        To find all prime numbers up to a given limit -> Option D
      4. Quick Check:

        Sieve finds primes = D [OK]
      Hint: Sieve marks multiples to find primes fast [OK]
      Common Mistakes:
      • Confusing sieve with sorting algorithms
      • Thinking it calculates factorial or gcd
      • Assuming it finds primes beyond the limit
      2. Which of the following C++ code snippets correctly initializes the sieve array for numbers up to n?
      easy
      A. std::vector<bool> sieve(n+1, true); sieve[0] = sieve[1] = false;
      B. std::vector<int> sieve(n, 0); sieve[0] = sieve[1] = 1;
      C. bool sieve[n]; for(int i=0; i
      D. std::vector<bool> sieve(n+1, false); sieve[0] = sieve[1] = true;

      Solution

      1. Step 1: Check initialization for prime marking

        The sieve should start with all true except 0 and 1, which are not prime.
      2. Step 2: Validate code correctness

        std::vector<bool> sieve(n+1, true); sieve[0] = sieve[1] = false; uses a vector<bool> with size n+1, sets all true, then marks 0 and 1 false correctly.
      3. Final Answer:

        std::vector<bool> sieve(n+1, true); sieve[0] = sieve[1] = false; -> Option A
      4. Quick Check:

        Initialize sieve true except 0,1 false = A [OK]
      Hint: Start sieve with true, mark 0 and 1 false [OK]
      Common Mistakes:
      • Using wrong data type for sieve array
      • Not marking 0 and 1 as non-prime
      • Initializing all false instead of true
      3. What will be the output primes printed by the following C++ code snippet using Sieve of Eratosthenes for n = 10?
      int n = 10;
      std::vector<bool> sieve(n+1, true);
      sieve[0] = sieve[1] = false;
      for (int i = 2; i * i <= n; i++) {
        if (sieve[i]) {
          for (int j = i * i; j <= n; j += i) {
            sieve[j] = false;
          }
        }
      }
      for (int i = 2; i <= n; i++) {
        if (sieve[i]) std::cout << i << " ";
      }
      medium
      A. 2 3 4 5 7
      B. 2 3 5 7
      C. 1 2 3 5 7
      D. 2 3 5 7 9

      Solution

      1. Step 1: Run sieve marking multiples

        Multiples of 2 (4,6,8,10) and 3 (9) are marked false.
      2. Step 2: Identify primes left true

        Numbers 2, 3, 5, 7 remain true and are printed.
      3. Final Answer:

        2 3 5 7 -> Option B
      4. Quick Check:

        Primes up to 10 = 2 3 5 7 [OK]
      Hint: Mark multiples starting from i*i to avoid repeats [OK]
      Common Mistakes:
      • Including non-primes like 4 or 9
      • Printing 1 as prime
      • Not starting inner loop from i*i
      4. Identify the error in the following Sieve of Eratosthenes code snippet and select the fix:
      int n = 20;
      std::vector<bool> sieve(n+1, true);
      sieve[0] = sieve[1] = false;
      for (int i = 2; i <= n; i++) {
        if (sieve[i]) {
          for (int j = i * 2; j <= n; j += i) {
            sieve[j] = false;
          }
        }
      }
      medium
      A. Start inner loop from j = i + 1
      B. Initialize sieve with false instead of true
      C. Change outer loop condition to i * i <= n
      D. Remove sieve[0] and sieve[1] assignments

      Solution

      1. Step 1: Analyze loop conditions

        The outer loop runs up to n, which is inefficient and unnecessary.
      2. Step 2: Correct loop to optimize marking

        Changing outer loop to run while i * i <= n avoids redundant checks and improves performance.
      3. Final Answer:

        Change outer loop condition to i * i <= n -> Option C
      4. Quick Check:

        Outer loop limit = i*i <= n [OK]
      Hint: Outer loop runs till i*i <= n for efficiency [OK]
      Common Mistakes:
      • Running outer loop till n wastes time
      • Starting inner loop incorrectly
      • Not marking 0 and 1 false
      5. You want to find all prime numbers up to n = 50 using the Sieve of Eratosthenes. After running the sieve, how many primes will be found?
      hard
      A. 15
      B. 16
      C. 14
      D. 17

      Solution

      1. 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).
      2. Step 2: Count primes correctly

        Counting carefully confirms total primes up to 50 is 15.
      3. Final Answer:

        15 -> Option A
      4. Quick Check:

        Count primes ≤ 50 = 15 [OK]
      Hint: Count primes carefully or use sieve output count [OK]
      Common Mistakes:
      • Counting non-primes like 1 or 9
      • Including primes beyond 50
      • Miscounting total primes
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard