线性筛素数
#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) 编辑 收藏 举报