home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / tools / cmerge / sieve.c < prev    next >
Text File  |  1987-06-04  |  791b  |  44 lines

  1.  
  2. /*    Eratosthenes Sieve Prime Number Program in C, Byte January 1983.
  3.  *    The code has been corrected to produce primes correctly.
  4. */
  5. #include <stdio.h>
  6.  
  7. #define TRUE    1
  8. #define FALSE    0
  9. #define NITER    150
  10. #define SIZE    8190
  11.  
  12. char flags[SIZE+1]={0};
  13.  
  14.  
  15. main ()
  16.     {
  17.     register int i,k;
  18.     int iter, count;
  19.  
  20.     printf ("%d iterations: ", NITER);
  21.  
  22.     for( iter = 1; iter <= NITER; iter++ )     /* Do sieve 150 times */
  23.         {
  24.         count = 0;
  25.         for( i = 0; i <= SIZE; i++)      /* set all flags true */
  26.             flags[i] = TRUE;
  27.  
  28.         for( i = 2; i <= SIZE; i++ )
  29.             {
  30.             if ( flags[i] )          /* found a prime */
  31.                 {
  32.                 for ( k = i + i; k <= SIZE; k += i )
  33.                     flags[k] = FALSE;    /* Cancel its multiples */
  34.                 count++;
  35.                 }
  36.             }
  37.         }
  38.  
  39.     printf ("%d primes\n", count);
  40.  
  41.     exit(0);
  42.  
  43.     }
  44.