筛选法求素数(灯亮)

筛选法求素数:是把从1开始的、给定范围内的整数(1-20)从小到大顺序排列了,已知1不是素数,继而从开始,2是素数,去掉2的倍数,剩下(2,3,5,7,9,11,13,15,17,19);继续从3开始,是素数,去掉3的倍数,剩下(2,3,5,7,11,13,17,19);依此类推,最后剩下的数就是素数。
例子:利用筛选法求100以内的素数。

#include
#include
int SiftPrime(int *brr,int len)
{
 assert(brr!=NULL);
  if(brr==NULL)
  {
   return 0 ;
  }
 int i,j;
 for(i=2;i<len;i++)
 {
  if(brr[i]!=0)
  {
   for(j=i+1;j<101;j++)
   {
    if(j%i==0)
    {
     brr[j]=0;
    }
   }
  }
 }
 for(i=1;i<len;i++)
 {
  if(brr[i]!=0)
  {
   printf("%d ",i);
  }
 }
}

int main()
{
 int arr[101];
 int len =sizeof(arr)/sizeof(arr[0]);
 for(int i=1;i<len;i++)
 {
  arr[i]=1;
 }
 SiftPrime(arr,len);
 return 0;
}

你可能感兴趣的:(筛选法求素数(灯亮))