news 2026/8/8 0:57:31

质数筛-欧拉筛

作者头像

张小明

前端开发工程师

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/8/7 4:40:00

[Java]PTA:jmu-Java-06异常-finally

代码中向系统申请资源&#xff0c;到最后都要将资源释放。现有一Resource类代表资源类&#xff0c;包含方法&#xff1a;open(String str)打开资源&#xff0c;声明为抛出Exception(包含出错信息)。close()方法释放资源&#xff0c;声明为抛出RuntimeException(包含出错信息)现…

作者头像 李华
网站建设 2026/8/8 1:50:21

9、高级 Active Directory 配置与复制管理全解析

高级 Active Directory 配置与复制管理全解析 1. 命令行管理复制活动介绍 在 Active Directory 环境中,通过命令行工具管理复制是一项重要技能。下面以 Activity 2 - 7 为例,详细介绍如何使用 repadmin 和 dcdiag 这两个命令行程序来管理复制。 - 活动概述 - 所需…

作者头像 李华
网站建设 2026/8/7 5:35:31

Magistral-Small-1.2:多模态推理新升级

Mistral AI推出Magistral-Small-1.2模型&#xff0c;首次实现240亿参数级模型的多模态能力与本地高效部署&#xff0c;标志着轻量化大模型在推理与视觉理解领域的重要突破。 【免费下载链接】Magistral-Small-2509-FP8-torchao 项目地址: https://ai.gitcode.com/hf_mirrors…

作者头像 李华
网站建设 2026/8/7 23:08:18

6、Windows 操作系统架构与网络通信详解

Windows 操作系统架构与网络通信详解 1. Windows 操作系统概述 在企业环境中,大多数计算机都安装了某种版本的 Windows 操作系统。尽管运行 Windows 3.0 的机器越来越少,但仍有许多工作站使用 Windows 3.1 或 Windows for Workgroups 3.1/3.11(WFW),我们通常将这些 Wind…

作者头像 李华
网站建设 2026/8/7 4:39:57

7、Windows网络与RPC编程全解析

Windows网络与RPC编程全解析 1. Windows操作系统模式与网络架构 Windows(3.0/3.1版本)有三种操作模式,分别是实模式、标准模式和增强模式。Windows for Workgroups 3.11 是Windows 3.x 系列中最具网络功能的版本。 标准模式和增强模式的Windows for Workgroups(WFW)都内…

作者头像 李华
网站建设 2026/8/8 0:42:15

9、RPC 通信基础设施设计与实现

RPC 通信基础设施设计与实现 1. RPC 数据传输与类型问题 RPC(远程过程调用)在数据传输时,每个远程函数的数据参数需要明确无误。开发者可使用特殊属性(如 [string] )来强类型化远程函数的参数。应用程序设计者还需特别注意数据在客户端和服务器之间传输时的编组和解组…

作者头像 李华