连续质数序列

返回<=n的所有质数

// 埃拉托色尼的筛子
vector sieve(int n) {
    vector 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节

你可能感兴趣的:(算法-编程)