打印小于N的所有素数(埃拉托色尼筛法)

打印小于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("指定范围的素数如下:\n");


	for (i = 2; i < N; ++i)
	{
		if(a[i])
			printf("%3d\n", i);
	}
	system("pause");
	return 0;
}





你可能感兴趣的:(C/C++,小知识)