連續質數序列

返回<=n的所有質數

// 埃拉托色尼的篩子
vector<int> sieve(int n) {
    vector<int> nums, result;
    for (int i = 0; i <= n; ++i)nums.emplace_back(i);
    for (int i = 2; i < pow(n, 0.5); ++i) {
        for (int j = i * i; j <= n; j += i)nums[j] = 0; //(i-1)*i、(i-2)*i的下標在之前已經判斷過了
    }
    for (int i = 2; i <= n; ++i) {
        if (nums[i] != 0)result.emplace_back(nums[i]);
    }
    return result;
}

Reference

  1. 《算法設計與分析基礎》1.1節
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章