GESP 五级 · GESP 202412 C++ 五级 第 7 题

选择题 · 答案 B · 考点:算法

← 整套速查表 GESP 五级 全部真题

题目

下述代码实现素数表的埃拉托色尼(埃氏)筛法,筛选出所有小于等于 $n$ 的素数。

vector<int> sieve_Eratosthenes(int n) {
    vector<bool> is_prime(n +1, true);
    vector<int> primes;

    for (int i = 2; i * i <= n; i++) {
        if (is_prime[i]) {
            primes.push_back(i);

            for (int j = i * i; j <= n; j += i) {
                is_prime[j] = false;
            }
        }
    }

    for (int i = sqrt(n) + 1; i <= n; i++) {
        if (is_prime[i]) {
            primes.push_back(i);
        }
    }

    return primes;
}

下面说法,正确的是( )。

答案:B

考点

算法

解题思维

埃氏筛法:从2开始标记倍数为合数,O(n log log n)。线性筛(欧拉筛):每个合数只被最小质因子标记一次,O(n)。线性筛效率更高。

常见错误

分析复杂度时注意外层循环和内层循环的关联。例如内外两层都到n的循环不一定是O(n²),要看内层是否每次都在缩小。

详细解析(节选)

【考点】埃氏筛法|算法复杂度分析|素数判定

1. 🎯 考纲定位

GESP 一级算法基础模块。命题人专门考查筛法优化细节,卡住的是死记结论却不懂算法内在逻辑的考生。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断