program ERATOST3 { Sieve of Eratosthenes } ; {$I version.pas} const Max = {$IFDEF DELPHI} 1000000*8 {or more} {$ELSE} 129683*8 {$ENDIF} ; var J, K : longint ; Prime : array [0..Max div 16] of set of 0..7 ; BEGIN Writeln('ERATOSTHENES'^M^J' 2') ; FillChar(Prime, SizeOf(Prime), $FF) ; for J := 3 to Max do if Odd(J) then if ((J div 2) and $7) in Prime[J div 16] then begin Writeln(J:6) ; K := J ; repeat K := K+2*J ; if K>Max then BREAK ; Exclude(Prime[K div 16], (K div 2) and $7) ; until false ; end ; Write('') ; Readln ; END.