Sieve Of Eratosthenes

 #include <bits/stdc++.h>

using namespace std;

//Sieve of Eratosthenes
/**
1  Create a list of consecutive integers from 2 to n: 
   (2, 3, 4, …, n).
2  Initially, let p equal 2, the first prime number.
3  Starting from p2, count up in increments of p and mark 
  * each of these numbers greater than or equal to p2 itself
  * in the list. These numbers will be 
  * p(p+1), p(p+2), p(p+3), etc..
4  Find the first number greater than p in the list that 
  * is not marked. If there was no such number, stop. 
  * Otherwise, let p now equal this number 
  * (which is the next prime), and repeat from step 3.

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

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(primetruesizeof(prime)); 
  
    for (int p=2p*p<=np++) 
    { 
        // 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*pi<=ni += p
                prime[i] = false
        } 
    } 
  
    // Print all prime numbers 
    for (int p=2p<=np++) 
       if (prime[p]) 
          cout << p << " "
  
// Driver Program to test above function 
int main() 
    int n = 30
    cout << "Following are the prime numbers smaller "
         << " than or equal to " << n << endl
    SieveOfEratosthenes(n); 
    return 0

Comments

Popular posts from this blog

Problem——50A. Domino piling——Codeforces

Euclid’s lemma