Показать сообщение отдельно
  #12  
Старый 05.05.2009, 18:42
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
Сообщение

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;
__________________
Велик и могуч наш Object Pascal !
ICQ: 357-591-887
Ответить с цитированием