From 94a33b8deacfb6eb0f0e9a6469acadf415f5469d Mon Sep 17 00:00:00 2001 From: Rafael Castro Date: Sat, 26 Oct 2019 18:20:22 -0300 Subject: [PATCH] sieve of eratosthenes algorithm --- Sieve/sieve.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 Sieve/sieve.c diff --git a/Sieve/sieve.c b/Sieve/sieve.c new file mode 100644 index 0000000..776cf95 --- /dev/null +++ b/Sieve/sieve.c @@ -0,0 +1,36 @@ +//This code compute the list of primes between 2 and N - 1 using the sieve algorithm that runs in O(nlogn) +#include + +#define N 100010 +int is_composite[N]; +int sz = 0; +int primes[N]; + +void sieve(){ + for(int i = 2 ; i * i < N ; i++){//Run until square root of N + if(!is_composite[i]){//if 'i' is a prime number then mark all multiples of 'i' as a composite number + for(int j = i + i ; j < N ; j += i){ + is_composite[j] = 1; + } + } + } + + for(int i = 2 ; i < N ; i++){ + if(!is_composite[i]){ + primes[sz++] = i; + } + } +} + +int main(){ + sieve(); + + printf("we have %d primes between(2..%d)\n", sz, N - 1); + printf("Showing the 40 first primes....:\n"); + + for(int i = 0 ; i < 40 ; i++){ + printf("%d\n", primes[i]); + } + + return 0; +} \ No newline at end of file