Guest User

primes

a guest
May 14th, 2013
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.92 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <stdbool.h>
  4. #include <math.h>
  5.  
  6. //prints list of primes of given length
  7.  
  8. //Uses Sieve of Erastothenes, modified from:
  9. //http://stackoverflow.com/a/19088/203705
  10.  
  11. int main(int argc, char** argv)
  12. {
  13.     unsigned int lim, i, j, len, start;
  14.  
  15.     if(argc != 2){
  16.         printf("Usage: %s length\n", *argv);
  17.         return 0;
  18.     }
  19.  
  20.     sscanf(*(argv+1), "%d", &len);
  21.    
  22.     //for len=2, start=10, lim=100
  23.     start = (unsigned int)pow(10.0, (double)(len-1));
  24.     lim = (unsigned int)pow(10.0, (double)(len));
  25.  
  26.     bool *primes = calloc(lim, sizeof(bool));
  27.  
  28.     unsigned int sqrtlim = sqrt(lim);
  29.     for (i = 2; i <= sqrtlim; i++)
  30.         if (!primes[i])
  31.             for (j = i * i; j < lim; j += i)
  32.                 primes[j] = true;
  33.  
  34.     for (i = start; i < lim; i++)
  35.         if (!primes[i])
  36.             printf("%d\n", i);
  37.  
  38.     free(primes);
  39.  
  40.     return 0;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment