program eratosztenesz; uses Crt; const N=500; { a vizsglt tartomny hatrnak fele, maximum 64820 } var szita : array[1..N] of boolean; i,j,koz : longint; kut : char; begin ClrScr; WriteLn(' A szitl prmszm :':50); WriteLn; { feltesszk, hogy minden szm prm } for i:=1 to N do szita[i]:=TRUE; { a 2 prm, kiratjuk } Write('2':8); { szamts a 3-mal indul } i:=3; { ciklus, amg i nem lesz nagyobb a hatr ngyzetgyknl } while i<=Round(Sqrt(2*N)+1) do begin if szita[(i-1) div 2] then begin { prmet talltunk, amivel szitlni kell } Write(i:8); { pratlan szmszoros elemeket kell kiejteni } koz:=2*i; { az els a 3-szorosa a tallt prmnek } j:=3*i; while j<=2*N+1 do begin { a tbbszrs trlse a prmek kzl } szita[(j-1) div 2]:=FALSE; j:=j+koz; end; end; i:=i+2; end; { vrakozs billentyletsre } repeat until KeyPressed; kut:=ReadKey; WriteLn; WriteLn('A tallt prmek :':48); { kirats } Writeln; Write('2':8); j:=1; for i:=1 to N do if szita[i] then begin Inc(j); Write(2*i+1:8); end; WriteLn; WriteLn; Write(2*N:25,'-ig ',j,' darab prmszm tallhat.'); repeat until KeyPressed; end.