问题:求1到n内的所有素数
思路:先找到最小的素数,然后把所有素数的倍数都筛掉。一直重复这个步骤。
代码:c++
#include<iostream>
using namespace std;
#define maxn 100005
bool Isprime[maxn];
void judge(int n){
for(int i=0;i<=n;i++){
Isprime[i]=true;
}
for(int i=2;i<=n;i++){
if(Isprime[i]==true){
for(int j=i*2;j<=n;j+=i){//j为i的倍数
Isprime[j]=false;
}
}
}
}
int main(){
int n;
cin>>n;
judge(n);
//素数从2开始
for(int i=2;i<=n;i++){
if(Isprime[i]==true) cout<<i<<endl;
}
}