home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
LANGUAGS
/
MODULA2
/
SIEVE.MOD
< prev
next >
Wrap
Text File
|
2000-06-30
|
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.