N未満の素数を全て印刷する(エラトセニスクリーン法)

618 ワード

N未満の素数(素数)を全て印刷
プログラム機能は、自然数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; }