素数を求める (ver.5)

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

素数を求める (ver.5)

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)
{
int j = 0;
for (i = 1; counter++, prime[i] * prime[i] <= no; i++)
{
counter++;
if (no % prime[i] == 0)
{
j = 1;
break; /* 割り切れるので、素数ではない */
}
}
if (!j)
prime[ptr++] = no; /* 最後まで割り切れなかったので、素数 */
}

for (i = 0; i < ptr; i++)
printf("%d\n", prime[i]);

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

return 0;
}

実行結果

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