Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- #include <math.h>
- //prints list of primes of given length
- //Uses Sieve of Erastothenes, modified from:
- //http://stackoverflow.com/a/19088/203705
- int main(int argc, char** argv)
- {
- unsigned int lim, i, j, len, start;
- if(argc != 2){
- printf("Usage: %s length\n", *argv);
- return 0;
- }
- sscanf(*(argv+1), "%d", &len);
- //for len=2, start=10, lim=100
- start = (unsigned int)pow(10.0, (double)(len-1));
- lim = (unsigned int)pow(10.0, (double)(len));
- bool *primes = calloc(lim, sizeof(bool));
- unsigned int sqrtlim = sqrt(lim);
- for (i = 2; i <= sqrtlim; i++)
- if (!primes[i])
- for (j = i * i; j < lim; j += i)
- primes[j] = true;
- for (i = start; i < lim; i++)
- if (!primes[i])
- printf("%d\n", i);
- free(primes);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment