#include #define TRUE 1 #define FALSE 0 int is_prime(long num) { int i = 5; int w = 2; if (num == 1) return 0; if (num == 2 || num == 3) return 1; if (!(num%2) || !(num%3)) return 0; while ((i*i) <= num) { if (!(num%i)) return 0; i += w; w = 6 - w; } return 1; } char* eratosthenes(long num) { long i, j; char* primes; primes = (char*)malloc((num+1)*sizeof(char)); if (primes == NULL) { return NULL; } memset(primes, TRUE, num); primes[1] = FALSE; for (i=2; i<=num; i++) if (primes[i]) /* Mark factors as composite */ for (j=i*i; j