素数筛选法
思想是这样的:
比如求100,000以内素数个数,
- 定义一个bool型变量(c里不能定义bool型),bool prime[100001](长度比10,000大1);
- 当i%2==1时,prime[i]=true;否则,prime[i]=false;
- i=3,j=2*i,对下标为3的倍数的prime[j]赋false;
- i自增,重复第3步;
- total=0; if(prime[i]) total++。
memset(prime,true,sizeof(prime));
prime[0]=false;
prime[1]=false;
for(i=4;i<1300000;i+=2)
prime[i]=false;
for(i=3;i<1140;i+=2)
if(prime[i])
for(j=i*2;j<1300000;j+=i)
prime[j]=false;
/**************************************************************************
                 
原文来自博客园——Submarinex的博客: www.cnblogs.com/submarinex/               
 
*************************************************************************/