当前位置: 首页 > news >正文

洛谷 P3383:线性筛素数 ← 埃氏筛

【题目来源】
https://www.luogu.com.cn/problem/P3383

【题目描述】
给定一个范围 n,有 q 个询问,每次输出第 k 小的素数。

【输入格式】
第一行包含两个正整数 n,q,分别表示查询的范围和查询的个数。
接下来 q 行每行一个正整数 k,表示查询第 k 小的素数。

【输出格式】
输出 q 行,每行一个正整数表示答案。

【输入样例】
100 5
1
2
3
4
5

【输出样例】
2
3
5
7
11

【数据范围】
对于 100% 的数据,n=10^8,1≤q≤10^6,保证查询的素数不大于 n。

【算法分析】
● 先用高效的素数筛选算法(埃氏筛优化版 / 线性筛)预处理出 10^8 以内的所有素数并存储,再通过数组直接查询第 k 小的素数(数组下标对应排名)。

● 执行示例(以 n=10 为例)如下所示
(1)初始化 st[0...10] = [true, true, true, true, true, true, true, true, true, true, true]。
(2)手动标记 st[0]=st[1]=false,此时 st = [f, f, t, t, t, t, t, t, t, t, t]。
(3)外层循环 i 从 2 开始(i*i<=10,即 i<=3):
○ i=2:st[2]=true(素数),内层循环从 j=4 开始,标记 4、6、8、10 为 false,此时 st[4/6/8/10]=f。
○ i=3:st[3]=true(素数),内层循环从 j=9 开始,标记 9 为 false,此时 st[9]=f。
○ i=4:4*4=16>10,循环终止。
(4)最终 st 数组:[f, f, t, t, f, t, f, t, f, f, f]。
(5)未被标记为 false 的数(2、3、5、7)就是 10 以内的素数,符合预期。

【算法代码】

#include<bits/stdc++.h>
using namespace std;const int maxn=1e8+5;
bool st[maxn]; //isPrime
int p[maxn]; //prime
int cnt;void seive(int n) {memset(st,true,sizeof st);st[0]=st[1]=false;for(int i=2; i*i<=n; i++) {if(!st[i]) continue;for(int j=i*i; j<=n; j+=i) st[j]=false;}for(int i=2; i<=n; i++) {if(st[i]) p[++cnt]=i;}
}int main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n,q,k;cin>>n>>q;seive(n);while(q--) {cin>>k;cout<<p[k]<<"\n";}return 0;
}/*
in:
100 5
1
2
3
4
5out:
2
3
5
7
11
*/





【参考文献】
https://blog.csdn.net/rstyduifudg/article/details/147163559
https://www.luogu.com.cn/problem/solution/P3383



 

http://www.jsqmd.com/news/330981/

相关文章:

  • 电磁波的反射与透射
  • 2026年 数控小钢炮厂家推荐排行榜:高刚性/高光/4万转/20-30KW大主轴/全自动换刀/龙门结构/粗精加工一体/西门子数控系统,性能强悍之选!
  • 【题解】SS221101C.iiidx
  • Flink Agents 0.1.0 发布公告 - 教程
  • 2026年碳纤维制品厂家推荐榜单:碳纤维羽毛球拍/网球拍/台球杆/自行车车架/无人机/运动器材/医疗器械等高端轻量化产品源头实力解析
  • 汉中串串综合排名榜(2026本地精选)
  • 方寸微PT153s芯片,国产USB转RJ45千兆网口芯片,替代RTL8153b方案
  • 方寸微T153s芯片,国产USB转RJ45千兆网口芯片,替代RTL8153b方案
  • 2026年方管厂家实力推荐榜:友发牌/镀锌/低合金/不锈钢/冷拔无缝等全品类优质品牌深度解析与选购指南
  • 用Python实现第一个量子机器学习模型完整教程:Qiskit与TensorFlow集成
  • 04课程:10、11通过yum安装Nginx~12简单源码安装和yum安装的区别~13通过Nginx源码复杂安装
  • Github源码推荐 | Prometheus:让自主无人机开发更简单、更高效!
  • 2026年 热熔胶厂家推荐排行榜:热熔胶颗粒/热熔胶块/压敏胶/聚烯烃热熔胶/聚酰胺热熔胶/EVA热熔胶/滤清器热熔胶/快递袋热熔胶/包装热熔胶/标签热熔胶,专业粘合解决方案
  • 新域名 oierin.top
  • 实用指南:Ubuntu 虚拟机配置静态 IP
  • 仿真引擎——构建系统跳动的心脏
  • 基于ssm+vue+mysql的爱心商城系统(源码+部署调试+大文档+讲解)
  • 2026年 云南旅行社推荐榜单:诚信地接+包车导游服务,火车站附近接送机一站式解决方案
  • 系统自动触发的登出逻辑*
  • 2026年 台湾物流专线服务商推荐排行榜:台湾专线物流/整柜运输/清关派送/电商物流/小三通物流/大件物流/海运运输,高效稳定跨境解决方案
  • U654615 比特聚集(bit)补题报告
  • 虚拟机需要连外网,同时笔记本连接wlan,IP经常变,该怎么配置网络?
  • 计算机毕业设计 | SpringBoot+vue高校迎新系统 新生报道高校宣传招生平台(附源码)
  • QTCreator error: C3861: “_mm_loadu_si64”: 找不到标识符
  • java: lambda表达式(极简解释)(自用)
  • 实用指南:RabbitMQ 在拼团系统中的应用:延迟队列、订单超时与消息幂等
  • SpringBoot基础配置拓展配置类+拦截器
  • VS2015安装后,安装QT59,之后安装qt-vsaddin-msvc2015-2.4.3.vsix 文件失败问题!
  • 2026年 精馏塔/蒸馏塔/回收设备厂家推荐榜单:NMP、DMF、DMAC专业精馏回用与蒸发设备技术实力深度解析
  • 零基础博客园皮肤美化攻略 - LI,Yi