线性筛

news/2025/2/2 12:09:46/文章来源:https://www.cnblogs.com/ccgc718/p/18696758

线性筛

引入


-例题(F题)

给定两个正整数\(n\),\(q\)然后询问\(q\)次,每次询问第\(m\)小的质数保证质数小于等于\(n\)

-思路

用数组把质数进行存储,再输出第\(m\)个便可以了,但是我们需要考虑时间空间限制,一般题暴力也可以,但有些题就想要让我们用线性筛。接下来进行讲解,供各位鉴赏。

线性筛


-原理

在遍历到某一个数字\(k\)时,如果\(k\)是质数,那么它的倍数(\(2*k\),\(3*k\)...\(n*k\))必然不是质数,若\(k\)不是质数,它必定被前面的某个质数排掉。

-核心代码

vector<bool> prime(n+1,true);//用数组存下0-n,默认每个数都是质数(true)
prime[0]=prime[1]=false;//0,1不是质数(fales)
for(int i=2;i*i<=n;++i){//遍历(Q1:为什么是i*i?)if(prime[i]){for(int j=i*i;j<=n;j+=i){//对这个质数的平方后的倍数排除(Q2:为什么从i*i开始?)prime[j]=false;//排除}} 
}

-Tips

Q1:

合数的性质:

如果 n 是合数,那么它至少有一个质因数 p 满足 p ≤ √n。

例如,n = 100,√100 = 10。如果 n 是合数,它至少有一个质因数 p ≤ 10。

筛法的终止条件:

当 i > √n 时,ii > n,此时 i 的倍数 i2, i3, ..., i(i-1) 已经被更小的质数筛除了。

因此,继续筛除已经没有意义。

Q2:

合数的性质:

如果 n 是合数,那么它至少有一个质因数 p 满足 p ≤ √n。

例如,n = 100,√100 = 10。如果 n 是合数,它至少有一个质因数 p ≤ 10。

筛法的起始点:

对于质数 i,i 的倍数 i2, i3, ..., i*(i-1) 已经被更小的质数筛除了。

因此,直接从 j = i * i 开始筛除。

上代码


#include <bits/stdc++.h>
using namespace std;int main() {int n,q,m;cin>>n>>q;vector<bool> prime(n+1,true);prime[0]=prime[1]=false;for(int i=2;i*i<=n;++i){if(prime[i]){for(int j=i*i;j<=n;j+=i){prime[j]=false;}} }vector<int> primes;//存入质数for(int i=2;i<=n;++i){if(prime[i]) primes.push_back(i);}while(q--){//多次询问cin>>m;if(m>=1&&m<=primes.size()){cout<<primes[m-1]<<endl;}else{cout<<-1<<endl;}}return 0;
} 

题解++,任务--!

感谢观看!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/877963.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI编程助手带来的洞察和启发——程序员职业的变革

前言 从chatgpt的横空出世到国内大模型的强势崛起, 从AI只会写诗作画到辅助编程, AI作为新质生产力的重要角色逐渐进入各行各业,为行业带来新的可能性。Cursor、通义灵码这类"AI程序员"的出现一方面给编码工作带来了便利,另一方面也对软件从业人员带来极大的冲击…

个人数据保全计划:部署joplin server笔记同步服务

前言 在这个数据爆炸的时代,个人数据的价值愈发凸显,成为我们生活与工作中无可替代的重要资产。上一篇文章里,我介绍了从印象笔记迁移至 Joplin 的过程,这是我寻求数据自主掌控的关键一步。在探索同步方案时,我尝试了 OneDrive,原以为它能提供稳定高效的同步服务,可实际…

【deepseek】在deepin系统上部署运行deepseek-r1

环境配置LM-Studio官网:https://lmstudio.ai/修改“镜像源”cd /opt/apps/ai.lmstudio/files/LM_Studio/resources/app/.webpack/main 使用vscode打开进行编辑,./resources/app/.webpack/main/index.js./resources/app/.webpack/main/llmworker.js./resources/app/.webpack/m…

C++ 编译静态链接 (-static)

因为很长一段时间内并不知道这个编译参数究竟是干什么用的,只知道这个参数在 NOI 系列赛事中普遍使用,并且会导致编译输出文件变大,直到碰到具体问题了才发现这个参数的作用 -static 参数是静态链接开关,不加这个参数默认是动态链接,加上这个参数以后是静态链接,先说一下…

https://avoid.overfit.cn/post/e57ca7e30ea74ad380b093a2599c9c01

DeepSeekMoE是一种创新的大规模语言模型架构,通过整合专家混合系统(Mixture of Experts, MoE)、改进的注意力机制和优化的归一化策略,在模型效率与计算能力之间实现了新的平衡。DeepSeekMoE架构融合了专家混合系统(MoE)、多头潜在注意力机制(Multi-Head Latent Attention, ML…

DeepSeekV3+Roo Code,智能编码好助手

前言 硅基流动最近上线了deepseek-ai/DeepSeek-R1与deepseek-ai/DeepSeek-V3,感兴趣快来试试吧! 邀请注册得14元不过期额度:https://cloud.siliconflow.cn/i/Ia3zOSCU。实践 最近VS Code中的自动编程插件Cline很火爆,Roo Code也是Cline的一个fork版本。 Cline 自主编码代理…

Cisco Catalyst 8000V Edge Software, IOS XE Release 17.16.1a ED - 思科虚拟路由器系统软件

Cisco Catalyst 8000V Edge Software, IOS XE Release 17.16.1a ED - 思科虚拟路由器系统软件Cisco Catalyst 8000V Edge Software, IOS XE Release 17.16.1a ED 思科 Catalyst 8000V 边缘软件 - 虚拟路由器 请访问原文链接:https://sysin.org/blog/cisco-catalyst-8000v/ 查看…

Cisco Catalyst 8000 Series Edge Platforms, IOS XE Release 17.16.1a ED - 思科路由器系统软件

Cisco Catalyst 8000 Series Edge Platforms, IOS XE Release 17.16.1a ED - 思科路由器系统软件Cisco Catalyst 8000 Series Edge Platforms, IOS XE Release 17.16.1a ED 思科 Catalyst 8000 边缘平台系列 IOS XE 系统软件 请访问原文链接:https://sysin.org/blog/cisco-cat…

Easysearch 集群通过 API 进行用户密码重置

在日常使用 Easysearch 中,难免会遇到集群密码需要重置的情况(如密码遗失、安全审计要求等)。 通过查看 Easysearch 用户接口文档,创建用户使用如下接口: PUT _security/user/<username> {"password": "adminpass","roles": ["m…

Elasticvue:一款轻量级的Elasticsearch可视化管理工具

Elasticvue是一款免费开源的Elasticsearch GUI工具,你可以使用它来管理ES里的数据, Elasticvue具有多种安装形式,我们这里采用最简单的Docker安装方式,其他版本如Winodws、MacOS、Linux和浏览器插件。 Elasticvue相比Kibana的优势主要体现在以下几个方面: 1、 轻量级与易用…

【攻防3.0 】信任攻击

Author: sm0nk@深蓝攻防实验室 上周在一个技术沙龙我分享了一个攻防相关议题——进击的白巨人,在此归档。一、进攻场景思考 无论是端侧产品还是流量侧产品、亦或是原生安全还是外挂式,主模式还是鉴黑和鉴白; 随着防守方强化的安全建设,安全产品越来越强,进攻的难度在增加;…

[2025.2.1 MySQL学习] MVCC

MVCC 基本概念当前读(直接读取数据页最新版本):读取的是记录的最新版本,读取时还要保证其他并发事务不能修改当前记录,会对读取的记录进行加锁。对于一些日常操作,如:select...lock in share mode、select ... for update、update、isnert、delete都是一种当前读快照读:…