素数筛(欧拉筛算法)

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

}

相关推荐
programhelp_4 分钟前
Roblox Coding OA 面经分享|题量不小,但整体更偏工程思维
人工智能·算法·面试
周末也要写八哥5 分钟前
机器学习评价指标之平均概念
人工智能·算法·机器学习
王璐WL6 分钟前
【C++进阶】多态,坑很多,面试常考!!!
c++·面试
运筹vivo@10 分钟前
33. 搜索旋转排序数组(leetcode每日一题)
c++·算法
m0_6294947312 分钟前
LeetCode 热题 100-----27. 合并两个有序链表
数据结构·算法·leetcode·链表
todaycode13 分钟前
Vue + CPP项目
javascript·c++·vue.js
玖釉-13 分钟前
Slang 和 HLSL 的区别与用法详解:现代图形渲染中的两种 Shader 编程语言
c++·算法·图形渲染
t-think14 分钟前
深入了解指针(3)
c语言·算法
GIOTTO情15 分钟前
Infoseek 危机公关自动化闭环系统,实现 PR 运维工程化
人工智能·算法·机器学习
hef28815 分钟前
利用C 图形界面展示MATLAB算法的高效混合编程实践
windows·算法·matlab