[c++]筛法求素数

#include <iostream>
using namespace std;
void FilterPrime(int n)
{
    bool* isPrimes = new bool[n+1];
    for(int i=2;i<=n;++i)
    {
        isPrimes[i] = true;
    }//创建一个与传入N 相同 大小的bool型数组

    isPrimes[2] = true;
    for(int j=2;j<=n;++j)
    {
        if(isPrimes[j]==true)
        {
            for(int m=2;j*m<=n;++m)
            {
                isPrimes[j*m] = false;
            }//这里 j会从2~n   j*m 的数就不是素数 把对应的数组的数组 去掉
        }
    }
    for(int k=2;k<=n;++k)
    {
        if(isPrimes[k]==true)
        {
            cout<<k<<"是素数"<<endl;
        }
    }
    delete [] isPrimes;
}
int main()
{
    int num;
    cin>>num;
    FilterPrime(num);
    system("pause");
    return 0;
}
原文地址:https://www.cnblogs.com/Wzqa/p/2952388.html