线性筛素数

#include <stdio.h>
#include
<string.h>
#include
<stdlib.h>
#include
<math.h>

const int N = 10000000;
bool a[N];
int p[N];
using namespace std;

void debug( )
{
#ifdef P
freopen(
"out","w",stdout);
#endif
}

void prime( )
{
debug( );
memset(a,
0, N*sizeof(a[0]));
int num = 0, i, j;
for (i = 2; i < N; ++i) {
if( a[i] == 0 ) p[num++] = i;
for (j = 0; (j < num && i*p[j] < N); ++j) {
a[ i
* p[j] ] = 1;
if(i%p[j] == 0) break;
}
}
}

int main( )
{
int i;
prime( );
for (i = 0; i < 1000000; i++)
printf(
"%d\n",p[i]);
return 0;
}

posted on 2011-07-29 20:58  more think, more gains  阅读(144)  评论(0编辑  收藏  举报

导航