欧拉筛法比埃氏筛法更快,是因为埃氏筛法重复置了一些质数倍数的合数的判断值。
例如:在得到3为质数时,置了9,12,15,18,21,24,27,30……等的判断值;而在得到5为质数时,置了25,30,35……等的判断值,这时30就重复了。
随便抄了个埃氏算法的代码(非重点)
#include <bits/stdc++.h>
using namespace std;
const long long maxn = 10000007 + 10;
const long long maxp = 700000;
int vis[maxn]; // i是合数vis为1,i是素数,vis为0
long long prime[maxp];
void sieve(long long n){
long long m = (long long)sqrt(n + 0.5);
memset(vis, 0,