素数を求める (ver.5)

明解C言語 入門編 > 5. 配列 >

素数を求める (ver.5)

Delphi


program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;
var
i, j, no: Integer;
prime: array[0..14] of Integer;
ptr: Integer = 0;
counter: Integer = 0;
begin
prime[ptr] := 2;
inc(ptr);

prime[ptr] := 3;
inc(ptr);

no := 5;
while (no <= 30) do
begin
j := 0;

i := 1;
while (true) do
begin
inc(counter);
if (prime[i] * prime[i] > no) then
break;

inc(counter);
if (no mod prime[i] = 0) then
begin
j := 1;
break; { 割り切れるので、素数ではない }
end;

inc(i);
end;

if j = 0 then
begin
prime[ptr] := no; { 最後まで割り切れなかったので、素数 }
inc(ptr);
end;

no := no + 2;
end;

for i := 0 to ptr - 1 do
begin
writeln(format('%d', [prime[i]]));
end;
writeln(format('計算を行った回数:%d', [counter]));
end.

実行結果

S:\>lesson042\project1.exe
2
3
5
7
11
13
17
19
23
29
計算を行った回数:34