(* 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.