C++: 筛选法查找素数/质数

本题要求使用筛法求出1~N以内的质数。

//函数接口定义:
vector<int> sieve(int n); //函数声明, 求n以内的质数~

题目要求:求n以内的质数。其中 n是传入的参数。n 的值不超过10 000 000的范围; 求出的质数存入容器vector并返回。

//裁判测试程序样例:
#include 
#include 
using namespace std;

vector<int> sieve(int n); //函数声明,求n以内的质数

int main(int argc, char const *argv[])
{
    int n;
    cin >> n;

    vector<int> ans = sieve(n);

    cout << ans.size() << endl;
    for (int i = 0; i < ans.size(); i++) {
        cout << ans[i];
        if (i < ans.size() - 1)cout << " ";
    }
    cout << endl;

    return 0;
}
//求素数函数
vector<int> sieve(int n)
{
    vector<bool> judge(n,true);
    vector<int> prime;
    for(int i=2;i<=n;i++)
        if(judge[i])
            for(int j=2;j*i<=n;j++) judge[j*i]=false;
    for(int k=2;k<=n;k++)
        if(judge[k]) prime.push_back(k);
    return prime;
}

你可能感兴趣的:(C++: 筛选法查找素数/质数)