质数(埃氏筛、欧拉筛)

news/2025/9/24 16:42:32/文章来源:https://www.cnblogs.com/starkzz/p/19109503

小赛码/数论

竞赛/数论

质数

一、质数:数字的原子

  • 原子是构成物质的基本单位

  • 质数是构建整数的基本单元

示例
60 = 2 × 2 × 3 × 5(仅由质数构成)
所有大于1的自然数都可分解为质数的乘积

类比说明

质数如同数学界的乐高积木,通过组合可构建任意整数


二、质数:现代密码的基石(RSA加密)

  • 保护移动支付、即时通讯、数据传输的核心技术

  • RSA加密原理

    基于大质数乘积的数学特性:正向计算易,逆向分解难


三、质数的分布特性

前20个质数序列:
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71...

分布规律:

  1. 密度递减:数字越大,质数出现频率越低

  2. 间距不规则:存在紧密对(如11-13)和巨大间隔(如113-127)

研究思考题

为何质数分布不遵循简单规律?
能否建立有效的质数预测模型?(尚未解决)


RSA加密算法详解

一、核心机制

通过三个关键步骤实现信息安全:

步骤 操作 数学基础
密钥生成 选择两个超大质数p,q 质数无限性
加密过程 计算n=p×q及公钥 大数分解困难
解密过程 使用私钥还原信息 欧拉函数特性

安全核心

当 n 超过 300 位时,暴力分解需数亿年计算时间

一、RSA 算法原理详解

1. 密钥生成步骤

第一步:选择两个不同的大质数

p = 61
q = 53

第二步:计算模数n和欧拉函数值φ(n)

n = p × q = 61 × 53 = 3233
φ(n) = (p-1)×(q-1) = 60 × 52 = 3120
  • n作为公钥的一部分公开
  • φ(n)用于后续密钥计算

第三步:选择公钥指数e

e = 17  (需满足1 < e < φ(n)且gcd(e, φ(n))=1)

第四步:计算私钥指数d


d ≡ e⁻¹ mod φ(n)
通过扩展欧几里得算法求得d = 2753
∵ 17 × 2753 = 46801 ≡ 1 mod 3120

2. 加密解密过程演示

加密消息m=65

c = m^e mod n = 65¹⁷ mod 3233 = 2790

解密过程

m = c^d mod n = 2790²⁷⁵³ mod 3233 = 65

二、质数判定算法

1. 试除法(朴素方法)

算法原理:

  • 质数定义:大于1的自然数,除了1和它本身外没有其他约数

  • 优化:只需检查2到√n之间的整数

C++实现:


bool isPrime(int n) {if (n <= 1) return false;for (int i = 2; i * i <= n; ++i)if (n % i == 0)return false;return true;
}

时间复杂度分析:

  • 单个数:O(√n)

  • 前N个数:O(N√N)

2. 埃拉托斯特尼筛法

算法步骤:

  1. 初始化布尔数组标记所有数为质数

  2. 从2开始,标记其倍数为合数

  3. 重复直到√n

C++实现:

void sieveOfEratosthenes(int n) {vector<bool> is_prime(n+1, true);is_prime[0] = is_prime[1] = false;for (int i = 2; i * i <= n; ++i) {if (is_prime[i]) {for (int j = i * i; j <= n; j += i)is_prime[j] = false;}}
}

时间复杂度:
O(n log log n)

3. 欧拉线性筛法

算法优势:

  • 每个合数只被标记一次

  • 可记录最小质因子

C++实现:

void linearSieve(int n) {vector<int> primes;vector<bool> is_prime(n+1, true);for (int i = 2; i <= n; ++i) {if (is_prime[i]) {primes.push_back(i);}for (int p : primes) {if (i * p > n) break;is_prime[i * p] = false;if (i % p == 0) break;}}
}

时间复杂度:
O(n)

教学流程

步骤 内容 形式
1 朴素枚举法 手动判断10以内质数
2 埃氏筛图解 小圆点图示(划掉倍数)
3 编写埃氏筛代码 强调 j=i*i 优化
4 时间复杂度分析 提问:哪些数字被重复处理?
5 线性筛原理 "最小质因子唯一性"示例
6 效率对比 10万级质数生成速度实测

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

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

相关文章

HarmonyOS数据持久化:Preferences轻量级存储实战

本文将详细介绍HarmonyOS 5(API 12)中的用户首选项(Preferences)数据持久化方案,通过实际代码示例讲解如何实现轻量级键值对数据的存储、读取和管理。1. Preferences核心概念与优势 Preferences是HarmonyOS提供的…

HarmonyOS服务卡片开发:动态卡片与数据绑定实战指南

✨ 一、服务卡片概述与优势 服务卡片是HarmonyOS提供的一种轻量级UI组件,具有以下核心特性:信息前置:将应用关键信息直接展示在桌面、锁屏等位置,用户无需打开应用即可获取重要信息。 交互便捷:支持按钮点击等基础…

【CV】GAN代码解析:base_model.py

【CV】GAN代码解析:base_model.pyPosted on 2025-09-24 16:39 SaTsuki26681534 阅读(0) 评论(0) 收藏 举报import os # 标准库:操作系统相关(本文件中未直接使用) import torch # PyTorch 主库 from pathli…

有理数类的问题回答

1. 与C语言有理数代码相比,该Java类更面向对象的原因 (1)封装性:Java类将有理数的分子numerator和分母denominator设为private,仅通过public方法对外暴露功能,隐藏了内部实现细节;而C语言通常通过结构体直接暴露…

企业网站设计与实现论文移动网站系统

听说这是目录哦 FinalShell连接VMware&#x1f324;️解决重连失效FinalShell的使用 免密登录⛈️能量站&#x1f61a; FinalShell连接VMware&#x1f324;️ 保持虚拟机的开机状态&#xff0c;打开FinalShell&#xff0c;如果虚拟机关机或者挂起&#xff0c;连接就会断开。 …

做网站时图片要切片有什么作用可以做砍价链接的网站

车牌识别系统 YOLOv5和LPRNet的车牌识别系统结合了深度学习技术的先进车牌识别解决方案。该系统整合了YOLOv5目标检测框架和LPRNet文本识别模型 1. YOLOv5目标检测框架 YOLO是一种先进的目标检测算法&#xff0c;以其实时性能和高精度闻名。YOLOv5是在前几代基础上进行优化的…

南昌网站建设规划方案传媒公司网站源码php

引人入胜的开篇&#xff1a;想要搞清楚LSTM中的每个公式的每个细节为什么是这样子设计吗&#xff1f;想知道simple RNN是如何一步步的走向了LSTM吗&#xff1f;觉得LSTM的工作机制看不透&#xff1f;恭喜你打开了正确的文章&#xff01; 前方核弹级高能预警&#xff01;本文信息…

微信版网站开发用安卓做网站

幸福树&#xff0c;一种寓意美好的观赏型植物&#xff0c;它生长非常迅速&#xff0c;稍不注意就长的非常茂盛。而要想保证幸福树的美貌&#xff0c;跟人的头发一样&#xff0c;我们要给它适当的修剪&#xff0c;那幸福树怎么修剪呢&#xff1f;为了大家能养出美丽的幸福树来&a…

HarmonyOS后台任务调度:JobScheduler与WorkManager实战指南

本文将深入探讨HarmonyOS 5(API 12)中的后台任务调度机制,重点讲解JobScheduler和WorkManager的使用方法、适用场景及最佳实践,帮助开发者实现高效、智能的后台任务管理。1. 后台任务调度概述 HarmonyOS提供了两种…

总线传输的四个阶段

1.申请分配阶段 由需要使用总线的主模块或主设备提出申请,经过总线仲裁机构决定下一个传输周期的总线使用权。也可将此阶段细分为传输请求和总线仲裁两个阶段 2.寻址阶段 获得使用权的主模块,通过总线发出本次要访问…

学校站群框架如何开发插件实现Word图片的批量上传与编辑?

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

化妆品公司网站源码wordpress ip锁定插件

在React的类组件中&#xff0c;从组件创建到组件被挂载到页面中&#xff0c;这个过程react存在一系列的生命周期函数&#xff0c;最主要的生命周期函数是componentDidMount、componentDidUpdate、componentWillUnmount 生命周期图例如下 1. componentDidMount组件挂载 如果你…

怎样改网站英文域名保定定兴网站建设

来源&#xff1a;新战略机器人为什么需要协作机器人&#xff1f;协作机器人的兴起意味着传统机器人必然有某种程度的不足&#xff0c;或者无法适应新的市场需求。总结一下&#xff0c;主要有几点&#xff1a;传统机器人部署成本高其实相对来讲&#xff0c;工业机器人本身的价格…

广西工程造价信息网佛山seo优化排名推广

1、先登录服务器创建新目录aaa 2、云盘都快照备份下。后续操作完核实无误了&#xff0c;您根据您需求删除快照就行&#xff0c; 然后登录服务器内执行&#xff1a; fdisk -l sblk blkid ll /aaa 3、执行&#xff1a;&#xff08;以下命令是进行数据盘做ext4文件系统并挂载…

HarmonyOS事件订阅与通知:后台事件处理

本文将深入探讨HarmonyOS 5(API 12)中的事件订阅与通知机制,重点讲解如何在后台处理事件,实现应用的实时响应和跨设备协同。内容涵盖核心API、实现步骤、实战示例及性能优化建议。1. 事件订阅与通知机制概述 Harmo…

HarmonyOS后台任务管理:短时与长时任务实战指南

本文将深入探讨HarmonyOS 5(API 12)中的后台任务管理机制,详细讲解短时任务和长时任务的适用场景、实现方法、性能优化及最佳实践,帮助开发者构建高效节能的后台任务系统。1. 后台任务概述与分类 HarmonyOS提供了完…

案例分享 | 芯片企业官网优化

案例分享 | 芯片企业官网优化

Kali Linux 2025.3 发布 (Vagrant Nexmon) - 领先的渗透测试发行版

Kali Linux 2025.3 发布 (Vagrant & Nexmon) - 领先的渗透测试发行版Kali Linux 2025.3 发布 (Vagrant & Nexmon) - 领先的渗透测试发行版 The most advanced Penetration Testing Distribution 请访问原文链接…

C语言多线程同步详解:从互斥锁到条件变量

在多线程编程中,线程同步是确保多个线程正确协作的关键技术。当多个线程访问共享资源时,如果没有适当的同步机制,可能会导致数据竞争、死锁等问题。本文将详细介绍C语言中常用的线程同步技术。 为什么需要线程同步?…

收废铁的做网站有优点吗完整网站设计

一、卸载 1. sudo apt-get autoclean 如果你的硬盘空间不大的话&#xff0c;可以定期运行这个程序&#xff0c;将已经删除了的软件包的.deb安装文件从硬盘中删除掉。如果你仍然需要硬盘空间的话&#xff0c;可以试试apt-get clean&#xff0c;这会把你已安装的软件包的安装包也…