
16.11.2009, 03:20
|
|
Познающий
Регистрация: 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..
|
|
|