2.9
Код:
type Tdarr = array of integer;
function FindPrimes(var arr:Tdarr; n:integer):integer;
var i:integer;
lim,num:integer;
isbreak:boolean;
begin
if n = 1 then
begin
Result := 0;
Exit;
end;
SetLength(arr, 1);
arr[0]:=2;
Result := 1;
if n = 2 then Exit;
num := 3;
while (num <= n) do
begin
isbreak := false;
lim := Trunc(Sqrt(num))+1;
for i:=0 to Length(arr)-1 do
if arr[i] > lim then break else
if num mod arr[i] = 0 then
begin
isbreak := true;
break;
end;
if not isbreak then
begin
SetLength(arr,Length(arr)+1);
arr[Result] := num;
Result := Result + 1;
end;
num := num + 2;
end;
end;
Функция возвращает число найденных простых чисел.
Пример использования:
Код:
var count:integer;
primes : Tdarr;
begin
count := FindPrimes(primes , 500);
...
// работа с полученным массивом, например вывод на экран
...
// т.к. массив primes динамический, не забудь потом освободить память
primes := nil;
end;