32 lines
731 B
Plaintext
32 lines
731 B
Plaintext
|
(* Eratosthenes Sieve Prime Number Program in Pascal *)
|
|||
|
(* From September, 1981 Byte magazine, page 182 *)
|
|||
|
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.
|
|||
|
|