用筛法求素数的基本思想是:把从1开始的、某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉。剩下的数中选择最小的数是素数,然后去掉它的倍数。依次类推,直到筛子为空时结束。
#include <iostream>
#include <cmath>
using namespace std;
void FilterPrime(int n)
{
bool* isPrimes = new bool[n+1];
for(int i=2;i<=n;i++)
isPrimes[i] = true;
isPrimes[0] = false;isPrimes[1] = false;
for(int i=2;j<=sqrt(n);i++)
{
if(isPrimes[i])
{
for(int j=2;j*i<=n;j++)
isPrimes[j*i] = false;
}
}
delete [] isPrimes;
}