diff --git a/Math/sieve_of_Eratosthenes.cpp b/Math/sieve_of_Eratosthenes.cpp new file mode 100644 index 000000000..30fd369ea --- /dev/null +++ b/Math/sieve_of_Eratosthenes.cpp @@ -0,0 +1,59 @@ +/* + * Sieve of Eratosthenes is an algorithm to find the primes + * that is between 2 to N (as defined in main). + * + * Time Complexity : O(N * log N) + * Space Complexity : O(N) + */ + +#include +using namespace std; + +#define MAX 10000000 + +int isprime[MAX]; + +/* + * This is the function that finds the primes and eliminates + * the multiples. + */ +void sieve(int N) { + isprime[0] = 0; + isprime[1] = 0; + for (int i = 2; i <= N; i++) { + if (isprime[i]) { + for (int j = i * 2; j <= N; j += i) { + isprime[j] = 0; + } + } + } +} + +/* + * This function prints out the primes to STDOUT + */ +void print(int N) { + for (int i = 1; i <= N; i++) { + if (isprime[i] == 1) { + cout << i << ' '; + } + } + cout << '\n'; +} + +/* + * NOTE: This function is important for the + * initialization of the array. + */ +void init() { + for (int i = 1; i < MAX; i++) { + isprime[i] = 1; + } +} + +int main() { + int N = 100; + init(); + sieve(N); + print(N); +} diff --git a/sieve_of_Eratosthenes.cpp b/sieve_of_Eratosthenes.cpp deleted file mode 100644 index e20aec6ae..000000000 --- a/sieve_of_Eratosthenes.cpp +++ /dev/null @@ -1,60 +0,0 @@ -/* - * 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