埃氏筛法 素数

今天 看了 《编程珠玑》  看到了 埃氏筛法   令我大为震惊  、、、、、、、、查找素数竟然 这么快 


因此将 代码 贴出来 、、、、、、、、、、、

# include
#include "boost/timer.hpp"
#include


int main ()
{
	
	int p=2,n=10000000;
  int i;
  double time;

	bool* x=new bool[10000001];
 

	for ( i=0;i<=n;++i)  //初始化 x
	{
		*(x+i)=1;
	}

	boost::timer t;   // 声明 定时器

	while(p<=n)
	{
		for(i=2*p;i<=n;i=i+p)  // 关键部分
		{
			*(x+i)=0;
		}

		do
		  ++p;

		while(*(x+p)==0);
	}

	time=t.elapsed();

	printf("%8f  \n",time);

	delete x;

	system("pause");

	return true;
}
运算速度 1000w  不到0.5秒   快爆了。。。。。。。。。

埃氏筛法 素数_第1张图片

你可能感兴趣的:(c++)