home *** CD-ROM | disk | FTP | other *** search
/ Phoenix CD 2.0 / Phoenix_CD.cdr / 02a / pctj486.zip / SIEVE.PAS < prev    next >
Pascal/Delphi Source File  |  1986-01-20  |  1KB  |  59 lines

  1. program SIEVE;
  2.  
  3. const
  4.   size = 7000;
  5.  
  6.  
  7. var
  8.   flags                             : array [0..7000] of byte;
  9.   hour,min,sec,frac,count,i,prime,k : integer;
  10.  
  11.  
  12. procedure TIMER;
  13.  
  14. type
  15.   REGPACK = record
  16.               AX,BX,CX,DX,BP,SI,DI,DS,ES,FLAGS : integer
  17.             end;
  18.  
  19. var
  20.   regs: Regpack;
  21.  
  22. begin
  23.    with REGS do
  24.      begin
  25.           AX := $2C00;
  26.           MsDos(REGS);
  27.           HOUR := hi(CX);
  28.           MIN  := lo(CX);
  29.           SEC  := hi(DX);
  30.           FRAC := lo(DX);
  31.      end;
  32. end;
  33.  
  34.  
  35. begin
  36.      writeln('Sieve of Erastosthenes'); writeln;
  37.      count := 0;
  38.      for i := 0 to size do flags[i] := 1;
  39.      timer;
  40.      writeln('Start : ',min,':',sec,'.',frac);
  41.      for i := 0 to size do
  42.          begin
  43.               if flags[i] = 1 then
  44.                  begin
  45.                       prime := i+i+3;
  46.                       k := i + prime;
  47.                       while k <= 960 do
  48.                             begin
  49.                                  flags[k] := 0;
  50.                                  k := k + prime;
  51.                             end;
  52.                      count := count + 1;
  53.                  end;
  54.          end;
  55.      timer;
  56.      writeln('Start : ',min,':',sec,'.',frac);
  57.      writeln(count,' primes found.');
  58. end.
  59.