N未満の素数を全て印刷する(エラトセニスクリーン法)
N未満の素数(素数)を全て印刷
プログラム機能は、自然数iが素数である場合、a[i]=1、そうでない場合a[i]=0とする.
1)まず配列中のすべての要素を1とし,すべての数が素数ではないと仮定する.
2)配列内のすべての対応するインデックス<既知の素数の倍数:非素数>の要素を0にする.
3)最後のa[i]が1のままである素数
プログラム機能は、自然数iが素数である場合、a[i]=1、そうでない場合a[i]=0とする.
1)まず配列中のすべての要素を1とし,すべての数が素数ではないと仮定する.
2)配列内のすべての対応するインデックス<既知の素数の倍数:非素数>の要素を0にする.
3)最後のa[i]が1のままである素数
#include
#include
#define N 1000 //
int main()
{
int i, j, a[N];
for(i = 2; i < N; ++i)
a[i] = 1;
for(i = 2; i < N; ++i)
{
if(a[i])
{
for(j = 2; i*j < N; ++j)
a[i*j] = 0;
}
}
printf(" :
");
for (i = 2; i < N; ++i)
{
if(a[i])
printf("%3d
", i);
}
system("pause");
return 0;
}