15

C/C++ Program for Sieve of Eratosthenes.

program solution

// C++ program to print all primes smaller than or equal to n using Sieve of Eratosthenes 

 

#include <stdio.h>
#include <string.h>
#define true  1
#define false 0


void SieveOfEratosthenes(int n) 

    /* Create a boolean array "prime[0..n]" and initialize all entries it as true. A value in prime[i] will finally be false if i is Not a prime, else true. */
    _Bool prime[n+1]; 
    memset(prime, true, sizeof(prime)); 
  
    for (int p=2; p*p<=n; p++) 
    { 
        // If prime[p] is not changed, then it is a prime 
        if (prime[p] == true) 
        { 
            /* Update all multiples of p greater than or equal to the square of it numbers which are multiple of p and are less than p^2 are already been marked. */ 
            for (int i=p*p; i<=n; i += p) 
                prime[i] = false; 
        } 
    } 
  
    // Print all prime numbers 
    for (int p=2; p<=n; p++) 
       if (prime[p]) 
          printf("%d ", p); 

  
// Driver Program to test above function 
int main() 

    int n = 30; 
    printf("Following are the prime numbers smaller than or equal to %d\n",n); 
    SieveOfEratosthenes(n); 
    return 0; 

Output

Following are the prime numbers below 30

2 3 5 7 11 13 17 19 23 29