素数筛(欧拉筛算法)

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

}

相关推荐
m0_748708054 分钟前
C++中的观察者模式实战
开发语言·c++·算法
然哥依旧5 分钟前
【轴承故障诊断】基于融合鱼鹰和柯西变异的麻雀优化算法OCSSA-VMD-CNN-BILSTM轴承诊断研究【西储大学数据】(Matlab代码实现)
算法·支持向量机·matlab·cnn
时光找茬17 分钟前
【瑞萨AI挑战赛-FPB-RA6E2】+ 从零开始:FPB-RA6E2 开箱测评与 e2 studio 环境配置
c++·单片机·边缘计算
qq_5375626717 分钟前
跨语言调用C++接口
开发语言·c++·算法
Tingjct29 分钟前
【初阶数据结构-二叉树】
c语言·开发语言·数据结构·算法
C雨后彩虹29 分钟前
计算疫情扩散时间
java·数据结构·算法·华为·面试
猷咪1 小时前
C++基础
开发语言·c++
CSDN_RTKLIB1 小时前
WideCharToMultiByte与T2A
c++
yyy(十一月限定版)1 小时前
寒假集训4——二分排序
算法
星火开发设计1 小时前
类型别名 typedef:让复杂类型更简洁
开发语言·c++·学习·算法·函数·知识