✏️ 纠错
第 201 题 / 共 251 题
第10题 如下为线性筛法,用于高效生成素数表,其核心思想是每个合数只被它的最小质因数筛掉一次,时间复杂度为O(n)。
vector<int> linearSieve(int n) {
vector<bool> is_prime(n + 1, true);
vector<int> primes;
for (int i = 2; i <= n; ++i) {
if (is_prime[i]) {
primes.push_back(i);
}
for (int j = 0; j < primes.size() && i * primes[j] <= n; ++j) {
is_prime[i * primes[j]] = false;
if (i % primes[j] == 0) {
break;
}
}
}
return primes;
}你真棒!
📝 题目解析
答案:√
知识点:线性筛法的原理及时间复杂度特性
解析:线性筛(欧拉筛)通过“每个合数只被其最小质因数筛除”的机制,确保每个数仅被处理一次,时间复杂度为O(n),是目前效率最高的素数筛法之一。代码实现正确,因此说法正确。