sieve of eratosthenes c++

The Sieve of Eratosthenes is an algorithm used to find all prime numbers up to a given limit. Here are the steps involved in implementing the Sieve of Eratosthenes in C++:

  1. Initialize an array of boolean values called "prime" with all elements set to true. The size of this array should be one more than the given limit, as we will be using 1-based indexing.

  2. Iterate through the array starting from index 2 (since 0 and 1 are not prime). For each index (let's call it "p") that is marked as prime, it means that "p" is a prime number.

  3. For each prime number "p", iterate through its multiples starting from "p*p" and mark them as non-prime. This is because any smaller multiple of "p" would have already been marked by a smaller prime number.

  4. After the loop ends, all the indices that are still marked as prime represent prime numbers up to the given limit.

Here is an example implementation of the Sieve of Eratosthenes in C++:

#include <iostream>
#include <vector>

void sieveOfEratosthenes(int limit) {
    std::vector<bool> prime(limit + 1, true);

    for (int p = 2; p * p <= limit; p++) {
        if (prime[p] == true) {
            for (int i = p * p; i <= limit; i += p) {
                prime[i] = false;

    for (int p = 2; p <= limit; p++) {
        if (prime[p]) {
            std::cout << p << " ";

    std::cout << std::endl;

int main() {
    int limit = 30;

    return 0;

In this example, the function sieveOfEratosthenes takes the limit as a parameter and prints all the prime numbers up to that limit. The main function calls sieveOfEratosthenes with a limit of 30. The output would be: "2 3 5 7 11 13 17 19 23 29".

I hope this explanation helps! Let me know if you have any further questions.