素数筛选法

思想是这样的:

比如求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 ;

你可能感兴趣的:(素数)