素数筛选法

思想是这样的:

比如求100,000以内素数个数,

  1. 定义一个bool型变量(c里不能定义bool型),bool prime[100001](长度比10,000大1);
  2. 当i%2==1时,prime[i]=true;否则,prime[i]=false;
  3. i=3,j=2*i,对下标为3的倍数的prime[j]赋false;
  4. i自增,重复第3步;
  5. 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;
原文地址:https://www.cnblogs.com/submarinex/p/1941302.html