这段时间在洛谷上面写题目的时候,发现对于莫比乌斯反演这种题目,以及一些其他的求素数的题目,假如要进行筛素数的时候,用埃氏筛一般都会被T,所以我想对这两种算法进行一个性能的对比。
首先,我们来看到埃氏筛,先给出代码:
//筛出1-n之间的素数
bool vis[1e7]={
false}; //初始化全为false
void Eratosthenes(int n){
for(int i=2;i<=n;i++){
if(vis[i]==false){
//发现这个是素数

在解决涉及素数筛选的问题时,埃氏筛在处理大数据时容易超时。线性筛通过优化避免了多余计算,其时间复杂度为O(N),相比埃氏筛的O(NloglogN)在大数据量下优势明显。对于1e7的数据,线性筛计算次数仅为埃氏筛的约1/2.7,更适合处理大规模问题。建议在算法学习中优先考虑使用线性筛。
最低0.47元/天 解锁文章
993





