筛选法求素数

Posted on 2011-07-22 23:49  continue_n  阅读(470)  评论(0)    收藏  举报

#include <stdio.h>
#include <math.h>
#define MAX 1000000
int s[MAX];
void Prime()
{
 int i, j;
 for( i = 4; i < MAX; i += 2)
  s[i] = 1;
 for( i = 3; i < sqrt(MAX); i += 2)
 {
  if( s[i] == 0 )
  {
   for( j = i*i; j < MAX; j += i)
    s[j] = 1;
  }
 }
}
int main()
{
 int i;
 Prime();
 for( i = 2 ; i < MAX ; i++)
 {
  if( s[i] == 0 ) printf("%d ",i);
 }
 printf("\n");
 return 0;
}

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3