31 lines
768 B
Plaintext
31 lines
768 B
Plaintext
|
(* BYTE Benchmark, 9/81, Eratosthenes Sieve Prime Maker *)
|
|||
|
PROGRAM prime (output); (*$DEBUG- added, of course *)
|
|||
|
CONST
|
|||
|
size = 8190;
|
|||
|
|
|||
|
VAR
|
|||
|
flags : ARRAY [0..size] OF boolean;
|
|||
|
i,prime,k,count,iter : integer;
|
|||
|
|
|||
|
PROCEDURE fillc (loc: adrmem; len: word; val: char); extern;
|
|||
|
|
|||
|
BEGIN
|
|||
|
writeln ('10 iterations');
|
|||
|
FOR iter := 1 TO 10 DO BEGIN
|
|||
|
count := 0;
|
|||
|
fillc (adr flags, sizeof(flags), chr(true));
|
|||
|
FOR i := 0 TO size DO
|
|||
|
IF flags[i] THEN BEGIN
|
|||
|
prime := i+i+3;
|
|||
|
k := i + prime;
|
|||
|
WHILE k <= size DO BEGIN
|
|||
|
flags[k] := false;
|
|||
|
k := k + prime
|
|||
|
END;
|
|||
|
count := count + 1;
|
|||
|
(* writeln(prime) *)
|
|||
|
END;
|
|||
|
END;
|
|||
|
writeln(count,' primes')
|
|||
|
END.
|
|||
|
|