Commit 815d5c9e authored by nimrod's avatar nimrod
Browse files

Replace long with int in the C version to improve performance.

parent eca72eb6
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -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;
}