//Eratosthenes筛法求素数
void Eratosthenes(vector<bool> &a, int n) //传入参数为数组时,新参为bool* a
{
a[1] = false; //a[0]不用
int i;
for (i=2; i<=n; i++) //筛法,默认是素数
a[i] = true;
int p=2;
int j=p*p;
while (j<=n) {
while (j<=n) {
a[j]=false;
j+= p;
}
p++;
while (!a[p]) //查找下一个素数
p++;
j=p*p;
}
}
int main()
{
int N=100;
vector<bool> a(N);
// bool a[N];
Eratosthenes(a, N);
for (int i=1; i<=N; i++) {
if (a[i]==true) {
cout<<i<<" ";
}
}
}
分治和递归:Eratosthenes筛法求素数
最新推荐文章于 2022-01-24 21:56:26 发布