(************************************************ Этот модуль сгенерирован транслятором AlgoPascal. ************************************************) uses Math, Ap; procedure EratosthenesSieve(N : Integer; var P : TInteger1DArray);forward; (************************************************************************* Процедура заполняет массив P простыми числами меньшими n, элемент массива является последним, если следующий за ним элемент равен 0. *************************************************************************) procedure EratosthenesSieve(N : Integer; var P : TInteger1DArray); var C : Boolean; I : Integer; J : Integer; K : Integer; R : Integer; S : Double; begin if N>200 then begin R := trunc(N/(Ln(N)-2)+1); end else begin R := trunc(1.6*N/Ln(N)+1); end; SetLength(P, R+1); P[1] := 1; P[2] := 2; P[3] := 3; i := 4; repeat P[i] := 0; i := i+1; until not (i<=r); j := 3; k := 3; repeat i := 2; s := sqrt(k); c := True; repeat i := i+1; if P[i]>S then begin P[j] := k; j := j+1; c := False; end; until not ((trunc(k/P[i])*P[i]<>K) and C); k := k+2; until not (k<=n); end;