#include <cstdlib>
#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;
const int MAX = 1000000+5;
long vis[MAX],primes[MAX];
void sieve(long n)
{
memset(vis,0,sizeof(vis));
int m = (int)sqrt(n + 0.5);//最大到 n的 开方
for(long i = 2; i < m; i++)if(!vis[i])
for(long j = i*i; j < n; j += i)
svis[j] = 1;
}
int gen_primes(long n)
{
sieve(n);
long c = 0;
for(long i = 2; i < n; i++)
if(!vis[i])primes[c++] = i;
return c;
}
int main(int argc, char *argv[])
{
memset(primes,0,sizeof(primes));
gen_primes(100000);
for(long i = 0; primes[i]; i++)printf("%ld ===>%ld\n",i,primes[i]);
system("PAUSE");
return EXIT_SUCCESS;
}
用高效的方法筛选小于n的素数