From 815d5c9e041319cbd9660aca9097bfa9c7c257eb Mon Sep 17 00:00:00 2001 From: Adar Nimrod <nimrod@shore.co.il> Date: Thu, 11 Feb 2016 10:55:47 +0200 Subject: [PATCH] Replace long with int in the C version to improve performance. --- prime.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/prime.c b/prime.c index 1ae7925..7fa61ce 100644 --- a/prime.c +++ b/prime.c @@ -2,11 +2,11 @@ #include <stdlib.h> #include <math.h> -int isPrime(unsigned long x) +int isPrime(unsigned int x) { - if (sqrt(x) - (unsigned long)sqrt(x) == 0) + if (sqrt(x) - (unsigned int)sqrt(x) == 0) return 0; - for (unsigned long i = 2; i < ceil(sqrt(x)); i++) + for (unsigned int i = 2; i < ceil(sqrt(x)); i++) if (x % i == 0) return 0; return 1; @@ -14,13 +14,13 @@ int isPrime(unsigned long x) int main( int argc, char** argv) { - unsigned long max = atol(argv[1]); - unsigned long *a = malloc(sizeof(unsigned long) * max); - unsigned long x = 2; - for (unsigned long i = 0; i < max; x++) + unsigned int max = atol(argv[1]); + unsigned int *a = malloc(sizeof(unsigned int) * max); + unsigned int x = 2; + for (unsigned int i = 0; i < max; x++) if (isPrime(x)) a[i++] = x; - for (unsigned long i = 0; i < max; i++) - printf("%lu\n", (unsigned long)a[i]); + for (unsigned int i = 0; i < max; i++) + printf("%u\n", (unsigned int)a[i]); return 0; } -- GitLab