筛选法的基本思想:假如有20个数从小大小排序,1不是,其他数选最小的数是素数,再筛掉数组中最小数的倍数,依次继续,直到筛选不出倍数的时候结束
#include <iostream>
using namespace std;
void fliter(int n)
{
bool *isPrime = new bool[n+1];
for(int i=2;i<=n;++i){
isPrime[i]=true;
}
isPrime[2]=true;
for(i=2;i<=n;++i){
if(isPrime[i] == true){
for(int m=2;i*m<=n;++m)
isPrime[i*m]=false;
}
}
for(i=2;i<=n;++i){
if(isPrime[i] == true){
cout<<i<<"是素数"<<endl;
}
}
;delete[]isPrime;
}
int main()
{
int a=100;
fliter(a);
printf("\n");
system("pause");
return 0;
}