home *** CD-ROM | disk | FTP | other *** search
- (* Compute a table of the first n primes numbers. Print m
- numbers per line. Use the method of the sieve of Erasthenes. *)
-
- MODULE sieve;
-
- FROM Terminal IMPORT WriteString, WriteLn;
- FROM InOut IMPORT WriteCard;
-
- CONST size = 8190;
- m = 10;
-
- VAR flags: ARRAY[0..size] OF BOOLEAN;
- i,prime,k,count: INTEGER;
-
- BEGIN
- count := 0;
- FOR i := 0 TO size DO flags[i] := TRUE END;
- FOR i := 0 TO size DO
- IF flags[i] THEN
- prime := i+i+3;
- k := i+prime;
- WHILE k <= size DO
- flags[k] := FALSE;
- INC(k,prime)
- END;
- INC(count);
- WriteCard(prime,8);
- IF count MOD m = 0 THEN WriteLn END
- END
- END;
- WriteLn; WriteCard(count,0);
- WriteString(' primes'); WriteLn
- END sieve.
-