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

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