home *** CD-ROM | disk | FTP | other *** search
/ Windows Shareware GOLD / NuclearComputingVol3No1.cdr / _bbs1 / f1243.zip / SIEVE.PAS < prev    next >
Pascal/Delphi Source File  |  1990-10-16  |  1KB  |  48 lines

  1.  
  2. Program Sieve(input, output);
  3.  
  4. const
  5.    Psize = 7400;
  6.  
  7. var
  8.    I, J   : integer;
  9.    Reps   : integer;
  10.    Pcount : integer;
  11.    Prime  : integer;
  12.    Hour, Min, Sec, Hund : integer;
  13.    TStart, TEnd : real;
  14.    Flags  : array[1..Psize] of boolean;
  15.  
  16. begin
  17.    Writeln( '5 passes' );
  18.    GetTime( Hour, Min, Sec, Hund );
  19.    TStart := (Min * 60) + Sec + (Hund / 100);
  20.  
  21.    For Reps := 1 to 5 do
  22.    begin;
  23. (*      Write( '.' ); *)
  24.       Pcount := 0;
  25.       For I := 1 to Psize do 
  26.     Flags[I] := true;         {Fill array with true.}
  27.       For I := 1 to Psize do
  28.       begin;
  29.          If Flags[I] then
  30.          begin;
  31.             Pcount := Pcount + 1;
  32.             Prime := I + I + 3;
  33.             J := Prime + I;
  34.             While J <= Psize do
  35.                begin;
  36.                   Flags[J] := false;
  37.                   J := J + Prime;
  38.                End {killing all multiples};
  39.             End {found a prime};
  40.          End {scan the array};
  41.       End {each pass};
  42.  
  43.    GetTime( Hour, Min, Sec, Hund );
  44.    TEnd := (Min * 60) + Sec + (Hund / 100);
  45.    Writeln( (TEnd - TStart):4:2, ' seconds.' );
  46.    Writeln( Pcount, ' primes found.' );
  47.    End.
  48.