找素数 -- 埃氏筛

代码骑士
优质创作者: 游戏开发技术领域
2023-04-07 21:46:21

前面的代码不太精简,我再写个精简一点的。

#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;
}

输出

 

...全文
234 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

5

社区成员

发帖
与我相关
我的任务
社区描述
考研408:数据结构、计算机组成原理、操作系统、计算机网络
学习方法考研面试 其他
社区管理员
  • 代码骑士
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧