news 2026/3/22 15:32:28

质数筛-欧拉筛

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
质数筛-欧拉筛

对于正常的程序要求,埃氏筛的速度已经是相当不错了,但是在某些极端条件下,埃氏筛的速度可能还不够,这个时候我们就要用到欧拉筛了

思路

埃氏筛存在一个非常严重的缺陷,那就是它会对一个数据进行反复筛选,比如:

6 = 2 * 3

6 = 3 * 2

可以发现,对于 6 这个非质数,我们进行了两次筛选,而对于后面跟大的数来说,可能被筛的次数会更多,这个时候就会对我们筛法的效率产生影响。而欧拉筛法可以避免无效的筛选。

我们发现,对于每个非质数,都会存在唯一的最小质因子

于是我们便可以让每个和数只在它最小质因子与对应因数相乘时才被标记为合数,这样我们就只筛了一次。例如:

6 = 2 * 3 //标记 6

6 = 3 * 2 //已经标记过,便不再标记

核心思想:从第一个质数开始,一个个排除,不做无效的筛选。

人话:从前向后走,边走边乘,乘出来的数就是合数

代码实现

#include<iostream> #include<cstring> using namespace std; const int N = 1e5; int primes[N]; //存储质数 int flag[N]; //标记是质数还是合数,如果是质数为 0 ,开始假设全是质数 int main(){ int n; cin >> n; int pos = 0; for(int i = 2 ; i <= n ; i++){ if(flag[i] == 0){ //如果是质数 primes[pos++] = i; //存储质数 for(int j = 0 ; j < pos && i * primes[j] <= n ; j++){ flag[primes[j] * i] = 1;//标记为合数 } }else{ //如果是合数 for(int j = 0 ; j < pos && primes[j] * i <= n ; j++){ flag[primes[j] * i] = 1;//标记为合数 if(i % primes[j] == 0) break; //如果可以整除说明发现了最小质因子,退出循环 } } } for(int i = 0 ; i < pos ; i++){ cout << primes[i] << ' '; } cout << endl; return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/14 0:15:29

河北石家庄/山东济南/天津商业文旅街区氛围设计公司【力荐】

商业文旅街区正以“商业文化旅游”的复合形态&#xff0c;成为城市活力焕新的核心载体。聚焦河北石家庄、山东济南、天津三大城市群&#xff0c;以地域文化为基因&#xff0c;以艺术科技为语言&#xff0c;从街区空间重构到主题场景营造&#xff0c;从互动装置研发到全周期运营…

作者头像 李华
网站建设 2026/3/18 19:07:29

53、FTDI设备使用与驱动配置全解析

FTDI设备使用与驱动配置全解析 1. FTDI设备的使用场景 FTDI技术有着多种实用的使用场景,为不同系统提供了便捷的连接和功能扩展方式。 - 作为USB转串口线 :这是FTDI技术最简单的应用,例如EasySync Ltd的USB - RS232适配线。只需安装FTDI驱动,将线缆的USB端插入系统的U…

作者头像 李华
网站建设 2026/3/19 12:46:59

56、嵌入式开发:Compact 7 集成管理代码与虚拟 PC 配置全攻略

嵌入式开发:Compact 7 集成管理代码与虚拟 PC 配置全攻略 1. 集成管理代码项目到 Compact 7 镜像构建 在将管理代码项目集成到 Compact 7 镜像构建时,需要进行一系列操作。 - 添加内容到 postlink.bat 文件 :添加以下内容到项目的 postlink.bat 文件中,代码片段来…

作者头像 李华
网站建设 2026/3/20 22:15:22

57、Windows Embedded Compact 7开发资源与硬件选择全解析

Windows Embedded Compact 7开发资源与硬件选择全解析 一、开发资源介绍 1.1 实用工具资源 在Windows Embedded Compact 7开发中,有许多实用的工具资源。比如Smart Device Information and Remote Processes Tool,它可以让你在桌面PC上管理Windows CE和Windows Mobile设备…

作者头像 李华
网站建设 2026/3/20 23:53:19

Linly-Talker镜像支持Kubernetes集群部署

Linly-Talker 镜像支持 Kubernetes 集群部署 在直播带货、智能客服和远程办公日益普及的今天&#xff0c;企业对“看得见”的交互体验提出了更高要求。用户不再满足于冷冰冰的文字回复或单调的语音播报&#xff0c;而是期待一个能听、会说、有表情的数字人助手——既能理解复杂…

作者头像 李华
网站建设 2026/3/18 23:29:22

计算机毕业设计springboot家乡特色美食推荐系统的设计与实现 SpringBoot驱动的地域风味美食智能推荐平台构建 基于SpringBoot的乡土特色菜品发现与分享系统

计算机毕业设计springboot家乡特色美食推荐系统的设计与实现psst3cf2 &#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。在全球化流动加剧、人口迁移常态化的当下&#xff0c;“舌尖…

作者头像 李华