素数を求める (ver.4)
明解C言語 入門編 > 5. 配列 >
素数を求める (ver.4)
C
#include <stdio.h>
int main(int argc, char* argv[])
{
int i, no;
int prime[15];
int ptr = 0;
unsigned long counter = 0;prime[ptr++] = 2;
prime[ptr++] = 3;for (no = 5; no <= 30; no += 2)
{
for (i = 1; i < ptr; i++)
{
counter++;
if (no % prime[i] == 0) break; /* 割り切れるので、素数ではない */
}
if (ptr == i)
prime[ptr++] = no; /* 最後まで割り切れなかったので、素数 */
}for (i = 0; i < ptr; i++)
printf("%d\n", prime[i]);printf("計算を行った回数:%lu\n", counter);
return 0;
}
実行結果
R:\>lesson041\project1.exe
2
3
5
7
11
13
17
19
23
29
計算を行った回数:42
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;
for i := 1 to ptr - 1 do
begin
inc(counter);
if (no mod prime[i] = 0) then
begin
j := 1;
break; { 割り切れるので、素数ではない }
end;
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:\>lesson041\project1.exe
2
3
5
7
11
13
17
19
23
29
計算を行った回数:42