ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

质数筛

质数筛

1.埃拉托斯特尼筛法
vector sieve(int n) {
vector is_prime(n + 1, true);
is_prime[0] = is_prime[1] = false;

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

}
2. 欧拉筛/线性筛
vector linear_sieve(int n) {
vector is_prime(n + 1, true);
vector 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;

}

返回列表