素数を求める (ver.3)

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

素数を求める (ver.3)

C


#include <stdio.h>
int main(int argc, char* argv[])
{
int i, no;
unsigned long counter = 0;

no = 2;
printf("%d\n", no); /* 素数 */

for (no = 3; no <= 30; no += 2)
{
for (i = 3; i < no; i += 2)
{
counter++;
if (no % i == 0) break; /* 割り切れるので、素数ではない */
}
if (no == i)
printf("%d\n", no); /* 最後まで割り切れなかったので、素数 */
}

printf("計算を行った回数:%lu\n", counter);

return 0;
}

実行結果


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

Delphi


program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;
var
i, j, k, n, no: Integer;
counter: Integer = 0;
begin
no := 2;
writeln(format('%d', [no])); { 素数 }

for k := 1 to 14 do
begin
no := k * 2 + 1;

j := 0;
for n := 1 to k - 1 do
begin
i := n * 2 + 1;

inc(counter);
if no mod i = 0 then
begin
j := 1;
break; { 割り切れるので、素数ではない }
end;
end;
if j = 0 then writeln(format('%d', [no])); { 最後まで割り切れなかったので、素数 }
end;

writeln(format('計算を行った回数:%d', [counter]));
end.

実行結果


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