From e8e2b9c427176a5866d9363e167c19bec7757d3c Mon Sep 17 00:00:00 2001 From: Uday Patel Date: Mon, 9 Oct 2017 02:34:50 +0100 Subject: [PATCH] Added Sieve of Eratostheness --- sieve_of_Eratosthenes.cpp | 60 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 sieve_of_Eratosthenes.cpp diff --git a/sieve_of_Eratosthenes.cpp b/sieve_of_Eratosthenes.cpp new file mode 100644 index 000000000..e20aec6ae --- /dev/null +++ b/sieve_of_Eratosthenes.cpp @@ -0,0 +1,60 @@ +/* + * Sieve of Eratosthenes is an algorithm to find the primes + * that is between 2 to N (as defined in main). + * + * Time Complexity : O(N) + * Space Complexity : O(N) + */ + +#include +using namespace std; + +#define MAX 10000000 + +int primes[MAX]; + + +/* + * This is the function that finds the primes and eliminates + * the multiples. + */ +void sieve(int N) +{ + primes[0] = 1; + primes[1] = 1; + for(int i=2;i<=N;i++) + { + if(primes[i] == 1) continue; + for(int j=i+i;j<=N;j+=i) + primes[j] = 1; + } +} + +/* + * This function prints out the primes to STDOUT + */ +void print(int N) +{ + for(int i=0;i<=N;i++) + if(primes[i] == 0) + cout << i << ' '; + cout << '\n'; +} + +/* + * NOTE: This function is important for the + * initialization of the array. + */ +void init() +{ + for(int i=0;i