program Goldbach_sejtese; uses Crt,Rutin; const { 64000-ig 8413 prm van } m=8500; { adatszegmens korlt miatt csak ekkora a szita } N=32000; var a,f,szam : word; i,j,k,l,koz : word; p : array[1..m] of word; szita : array[1..N] of boolean; jel : char; begin ClrScr; WriteXY(25,1,'G O L D B A C H S E J T S E '); WriteXY(25,15,' Kivlogatom 64000-ig a prmeket !'); { prmek kiszitlsa a p tmbbe } for i:=1 to N do szita[i]:=TRUE; { a 2 prm, kiratjuk } p[1]:=2; { 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 { 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; { kirats } j:=1; for i:=1 to N do if szita[i] then begin Inc(j); p[j]:=2*i+1; end; Window(1,2,80,25); { prmek kiszitlva } repeat ClrScr; { hatrok beolvassa } repeat WriteXY(8,2,' A vizsglt tartomny kezdete : '); WordRead(a); until (a>3) and (a<2*N); repeat WriteXY(46,2,' s vge : '); WordRead(f); until (f>=a) and (f<=2*N); WriteLn; { a hatrokat felezzk } a:=(a+1) div 2; f:=f div 2; { a pros szmok ellltsa a hatrokon bell } for i:=a to f do begin { szam : a felbontand szm } szam:=i*2; { kirjuk a szmot } Write(szam:6); { megkeressk a nla kisebb legnagyobb prmek szmt, ez az l } l:=1; while p[l]