Показать сообщение отдельно

  #5  
Старый 16.11.2009, 03:20
StealthMaster
Познающий
Регистрация: 03.12.2008
Сообщений: 56
Провел на форуме:
140714

Репутация: 29
По умолчанию

Описание: В моем примере заполняется целочисленный массив длины 256 простыми числами, а затем результат выводится в Memo.

Краткое пояснение
: число будет простым в том и только том случае, когда оно не делится ни на одно из предыдущих простых чисел.

Код:
type
  PrimeNumbers = Array [byte] of integer;


function GetPrimeNumbers: PrimeNumbers;
var
  counter, number: integer; // текущий номер простого числа и само число
  i: integer; // счетчик цикла
  flag: boolean;
begin
  counter := -1;
  number := 2;

  while (counter < 255) do
    begin
      flag := true;

      if counter >= 0 then // у меня в Delphi 7 под Win7 некорректно отрабатывает 
                           //цикл for, если второй индекс меньше первого.
                           // возможно  проблема исключительно моей системы
        for i := 0 to counter do
          if (number mod Result[i] = 0) then
            begin
              flag := false;
              break;
            end;

      if flag then
        begin
          inc(counter);
          Result[counter] := number;
        end;

      inc(number);
    end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
  Numbers: PrimeNumbers;
  i: integer;
begin
  Numbers := GetPrimeNumbers;

  for i := 0 to 255 do
    Memo1.Lines.Add(IntToStr(Numbers[i]));
end;

Последний раз редактировалось StealthMaster; 16.11.2009 в 03:25..
 
Ответить с цитированием