procedure getprime; var i, j: Longint; p: array[1..50000] of Boolean; begin FillChar(p, SizeOf(p), true); p[1] := false; i := 2; while i < 50000 do begin if p[i] then begin j := i * 2; while j < 50000 do begin p[j] := false; Inc(j, i); end; end; Inc(i); end; l := 0; for i := 1 to 50000 do if p[i] then begin Inc(l); pr[l] := i; end; end; function prime(x: Longint): Integer; var i: Integer; begin prime := false; for i := 1 to l do if pr[i] >= x then Break else if x mod pr[i] = 0 then Exit; prime := true; end; //delphi/6603