GESP C++ 真题 · 逐题精解
首页 › C++五级真题 › 2026年9月 › 第6题

GESP 2026年9月 C++五级 单选题 第6题

C++五级单选题2026年9月第6题

所属知识点:综合应用(跨题型) 难度要求:掌握 考频:—

下面代码实现线性筛法。为了保证每个合数只被其最小质因子筛去一次,横线处应填写(  )。
vector<int> linearSieve(int n) {
    vector<bool> composite(n + 1, false);
    vector<int> primes;

    for (int i = 2; i <= n; i++) {
        if (!composite[i])
            primes.push_back(i);
        for (int p : primes) {
            if ((long long)i * p > n)
                break;
            composite[i * p] = true;
            if (__________________)
                break;
        }
    }
    return primes;
}

正确答案:B

题目解析
线性筛中当 i 能被当前质数 p 整除(i % p == 0)时必须 break,因为再往后 p 就不是 i*p 的最小质因子,从而保证每个合数只被最小质因子筛一次,故选 B。

想系统刷完 GESP C++ 1~8 级真题,并查看每道题的逐题精讲?

进入 GESPPASS 开始练习