home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / progmisc / euphor10.zip / SIEVE.PAS < prev    next >
Pascal/Delphi Source File  |  1993-05-31  |  880b  |  46 lines

  1. program main(input, output);
  2. { Prime Sieve Benchmark }
  3.  
  4. const
  5.   ITERATIONS = 1000;
  6.   SIZE = 8190; 
  7.   ON = true;
  8.   OFF = false;
  9.  
  10. var 
  11.   count: integer;
  12.   flags: array[0 .. SIZE] of boolean;
  13.  
  14. procedure sieve;
  15. var
  16.     i, k, prime: integer;
  17.     iter, t: integer;
  18. begin
  19.     for iter := 1 to ITERATIONS do
  20.     begin
  21.         count := 0;
  22.         { turn flags on }
  23.         for i := 0 to SIZE do
  24.             flags[i] := ON;
  25.         for i := 0 to SIZE do
  26.     begin
  27.             if flags[i] then
  28.         begin
  29.                 prime := i + i + 3;
  30.                 { writeln(prime); } 
  31.                 k := prime + i;
  32.                 while k <= SIZE do
  33.         begin
  34.                     flags[k] := OFF;
  35.                     k := k + prime;
  36.         end;
  37.                 count := count + 1;
  38.         end;
  39.      end;
  40.     end;
  41. end;
  42. begin
  43.   sieve;
  44.   writeln(count, ' primes');
  45. end.
  46.