From b5b5ec103bfaccd71000703804b1c93310a7e1ad Mon Sep 17 00:00:00 2001 From: Daniel Grimshaw Date: Mon, 2 Oct 2017 10:40:24 -0700 Subject: [PATCH] Add Sieve of Eratosthenes --- primes.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 primes.c diff --git a/primes.c b/primes.c new file mode 100644 index 00000000..e8e8acb3 --- /dev/null +++ b/primes.c @@ -0,0 +1,46 @@ +#include +#include +#include + +void primes(bool * primeList, int len) { + int i, j; + + // Initiallize the list + for (i = 0; i < len; i++) { + primeList[i] = true; + } + primeList[0] = false; // 0 is not prime + primeList[1] = false; // 1 is not prime + + for (i = 0; i < len; i++) { + if (primeList[i] == true) { + for (j = i*i; j < len; j = j+i) { + primeList[j] = false; + } + } + } +} + +int main(void) { + int size, i; + bool * list; + + // Ask for the largest value to check primeness + printf("Maximum value: "); + scanf("%d", &size); + + // Allocate list to act as prime mask + list = malloc(sizeof(bool) * size); + + // Populate list + primes(list, size); + + // Print prime numbers + for (i = 0; i < size; i++) { + if (list[i] == true) { + printf("%d\n", i); + } + } + + return 0; +}