素数筛(欧拉筛算法)

#include<bits/stdc++.h>

using namespace std;

#define maxn 100000

int vis[maxn];

int prime[maxn];

//欧拉筛函数

int Euler_sieve(int n)

{

int i,j,k;

k=0;//保存素数的个数

memset(vis,0,sizeof(int)*maxn);//初始化数组

for(i=2;i<=n;i++)

{

if(vis[i]==0)//i是素数,则存起来

prime[k++]=i;

for(j=0;j<k;j++)//进行倍增,用i去乘以i之前(包括i)的素数

{

if(i*prime[j]>n)//倍增结果超出范围,退出

break;

vis[ i*prime[j] ]=1;//将倍增结果进行标记

if(i%prime[j]==0)//i是前面某个素数的倍数时,也需要退出,能大大提升时间效率

break;

}

}

return k;

}

int main(){

int n;

cin>>n;

int len=Euler_sieve(n);

for(int i=0;i<len;i++){

cout<<prime[i]<<endl;

}

return 0;

}

相关推荐
字节高级特工35 分钟前
网络协议分层与Socket编程详解
linux·服务器·开发语言·网络·c++·人工智能·php
FS_tar1 小时前
高斯消元矩阵
c++·算法·矩阵
小蝙蝠侠2 小时前
安德烈·卡帕西:深入探索像ChatGPT这样的大语言模型内容列表
人工智能·算法·机器学习
闻缺陷则喜何志丹2 小时前
【贪心之临项交换】P8732 [蓝桥杯 2020 国 ABC]|普及
c++·算法·蓝桥杯·贪心·洛谷
charlie1145141912 小时前
理解C++20的革命特性——协程支持1
c++·学习·c++20·协程·语言特性·调度·现代c++
而后笑面对2 小时前
关于力扣2025.10.4每日 11.盛最多雨水的容器
算法·leetcode·职场和发展
郝学胜-神的一滴2 小时前
Effective STL 第1条:慎重选择容器类型
开发语言·c++·程序人生·软件工程
UrbanJazzerati2 小时前
考研数学:数轴根法(穿根法)——高效求解高次不等式的利器
算法
可触的未来,发芽的智生2 小时前
新奇特:负权重橡皮擦,让神经网络学会主动遗忘
人工智能·python·神经网络·算法·架构
阿明62 小时前
list模拟实现(简单版)【C++】
开发语言·c++·学习·list