home *** CD-ROM | disk | FTP | other *** search
/ Microsoft Programmer's Library 1.3 / Microsoft-Programers-Library-v1.3.iso / sampcode / c / msc51 / example / sieve.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-08-11  |  788 b   |  43 lines

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