5
社区成员
发帖
与我相关
我的任务
分享前面的代码不太精简,我再写个精简一点的。
#include<bits/stdc++.h>
#define MAXN 100000005
using namespace std;
bool isPrime[MAXN];
//输出100以内的素数
int main(){
int cnt=0;
int n=100;
//初始化
for(int i=0;i<=n;i++) isPrime[i]=true;//默认全是素数
isPrime[0]=isPrime[1]=false;//0,1绝对不是素数,所以set为false
//从2开始往后筛
for(int i=2;i<=n;i++){
if(isPrime[i]){//如果isPrime[i]是素数,那么就划去所有此素数的倍数
for(int j=2*i;j<=n;j+=i){
isPrime[j]=false;
}
if(isPrime[i]){//没被删的就是素数(没有倍数,因数只有1和本身的数)
cnt++;
}
}
}
//输出全部素数
for(int i=0;i<=n;i++){
if(isPrime[i]){
cout<<i<<",";
}
}
//输出素数个数
cout<<endl<<cnt;
return 0;
}
输出
