home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
cpm
/
languags
/
modula2
/
sieve.mod
< prev
next >
Wrap
Text File
|
1987-01-08
|
736b
|
34 lines
(* 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.