埃氏筛法,全名埃拉托斯特尼筛法,也叫爱氏筛法,是一种由希腊数学家埃拉托斯特尼所提出的一种简单检定素数的算法。
要得到 自然数 n 以内的全部素数,必须把 不大于根号 n 的所有素数的倍数剔除,剩下的就是素数。
算法思想:给出从2到n的所有数,并且从2开始将2的倍数并且不大于n的数全部去掉,以此类推,直到到根号n结束。没有被去掉的数,就是素数。
代码如下。
寻找素数,并求它的倍数,而且不大于n。
for(i=2;i<=n/i;i++){
if(a[i]==0){
for(j=2;i*j<=n;j++){
a[i*j]=1;
}
}
}
寻找没有标记的数,就是素数并输出。
for(i=1;i<=n;i++){
if(a[i]==0){
flag=1;
cout<<i<<endl;
}
}
完整代码如下:
#include<iostream>
using namespace std;
int main(){
int a[100005]={0};
int n,i,j,flag;
n=100000;
a[1]=1;
for(i=2;i<=n/i;i++){
if(a[i]==0){
for(j=2;i*j<=n;j++){
a[i*j]=1;
}
}
}
for(i=1;i<=n;i++){
if(a[i]==0){
flag=1;
cout<<i<<endl;
}
}
return 0;
}