Guest User

paxsali's prime generator in C

a guest
Aug 4th, 2013
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.45 KB | None | 0 0
  1. //
  2. //  main.c
  3. //  PG2
  4. //
  5. //  Created by Alexander on 05.08.13.
  6. //  Copyright (c) 2013 WhiteBarbarian. All rights reserved.
  7. //
  8.  
  9. #include <stdio.h>
  10. #include <time.h>
  11. #include <math.h>
  12.  
  13. #define MAX_PRIMES 10000
  14.  
  15. int count = 0;
  16. int primes[MAX_PRIMES] = {};
  17.  
  18. int prime(int n) {
  19.     int r1, r2;
  20.    
  21.     for (int i = 0; i < count; i++) {
  22.         if (primes[i] < 1) {
  23.             return 0;
  24.         } else {
  25.             r1 = pow(n, 0.5) + 1;
  26.             r2 = n % primes[i];
  27.            
  28.             if (primes[i] <= r1 && r2 == 0) {
  29.                 return 0;
  30.             }
  31.         }
  32.     }
  33.     return 1;
  34. }
  35.  
  36. int main(int argc, const char * argv[])
  37. {
  38.     clock_t start, stop;
  39.     double diff;
  40.    
  41.     int i = 2;
  42.     int d = 1;
  43.     int nums[4] = {1, 3, 7, 9};
  44.    
  45.     start = clock();
  46.    
  47.     while (count < MAX_PRIMES) {
  48.         while (i < 10) {
  49.             if (prime(i)) {
  50.                 primes[count] = i;
  51.                 count++;
  52.             }
  53.             i++;
  54.         }
  55.         for (int p = 0; p < 4; p++) {
  56.             i = d * 10 + nums[p];
  57.             if (prime(i)) {
  58.                 primes[count] = i;
  59.                 count++;
  60.             }
  61.         }
  62.         d++;
  63.     }
  64.    
  65.     stop = clock();
  66.     diff = (stop - start) / (double)CLOCKS_PER_SEC;
  67.    
  68.     for (int i = 0; i < count; i++) {
  69.         printf("%d: %d\n", i, primes[i]);
  70.     }
  71.    
  72.     printf("Completed in %f seconds\n", diff);
  73.    
  74.     return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment