home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / xco212p.zip / SAMPLES / SIMPLE / sieve.ob2 < prev    next >
Text File  |  1995-01-31  |  841b  |  42 lines

  1. <*+ MAIN *> 
  2. MODULE sieve;
  3.  
  4. IMPORT InOut;
  5.  
  6. CONST
  7.   SIZE = 8190;
  8.  
  9. VAR
  10.   iter, maxiter, count: LONGINT;
  11.   flags: ARRAY SIZE+1 OF BOOLEAN;
  12.  
  13. PROCEDURE iteration;
  14. VAR
  15.   i, k, prime: LONGINT;
  16. BEGIN
  17.   FOR i := 0 TO SIZE DO
  18.     flags[i] := TRUE;
  19.   END;
  20.   count := 0;
  21.   FOR i := 0 TO SIZE DO
  22.     IF flags[i] THEN
  23.       prime := i * 2 + 3;
  24.       k := i + prime;
  25.       WHILE k <= SIZE DO
  26.         flags[k] := FALSE;
  27.         INC (k, prime);
  28.       END;
  29.       INC (count)
  30.     END
  31.   END
  32. END iteration;
  33.  
  34. BEGIN
  35.   InOut.WriteString ("Iterations? "); InOut.ReadInt (maxiter); InOut.WriteLn;
  36.   count := 0;
  37.   FOR iter := 1 TO maxiter DO iteration END;
  38.   InOut.WriteString ("There are "); InOut.WriteInt (count+1, 0);
  39.   InOut.WriteString (" primes in range 1 ..");
  40.   InOut.WriteInt (SIZE*2+4, 0); InOut.WriteLn;
  41. END sieve.
  42.