线性时间筛选n个模M的逆元的方法及证明

欧拉函数:从互质计数到RSA加密的核心数论工具 在数论与密码学中,模运算和最大公约数是基础且高频被搜索的核心概念。模运算定义了整数除法的余数系统,是理解同余和循环结构的关键;而最大公约数则衡量了两个整数的公共因子,是判断互质关系的基石。基于这两个概念,欧拉函数作为一种重要的数论函数,其核心价值在于精确计数在模n系统中与n互质的整数个数,这直接关联到模运算下可逆元的数量。这一特性使其成为RSA公钥加密算法安全性的理论支柱,因为该算法依赖由大质数乘积n的欧拉函数值所构建的“秘密桥梁”来生成密钥。同时,在算法竞赛中,欧拉定理为处理超大指数取模问题提供了降幂的通 阅读详情

结论:

假设取模MM

初始化设

inv[1]=1

则

inv[i]=(M−Mi)×inv[M % i] % Minv[i]=(M−Mi)×inv[M % i] % M

推导如下:

设

t=Mi , k=M % it=Mi , k=M % i

根据同余定义我们可以得到

t×i+k≡0 (mod M)t×i+k≡0 (mod M)

即:

−t×i≡k (mod M)−t×i≡k (mod M)

两边同时乘上i×k的逆元i×k的逆元

即

−t×i×i−1×k−1≡k×k−1×i−1 (mod M)−t×i×i−1×k−1≡k×k−1×i−1 (mod M)

即

−t×k−1≡i−1 (mod M)−t×k−1≡i−1 (mod M)

即

−t×inv[k]≡inv[i] (mod M)−t×inv[k]≡inv[i] (mod M)

这时我们得到了递推式,要求inv[i]inv[i]

其实答案就是

−t×inv[k] % M−t×inv[k] % M

我们将一开始的设的t,k带入得到t,k带入得到

(−Mi)×inv[M % i] % M(−Mi)×inv[M % i] % M

即:

(−Mi) % M×inv[M % i] % M(−Mi) % M×inv[M % i] % M

为了防止出现负数(−Mi) % M(−Mi) % M完全可以加上一个MM即(−Mi+M) % M

原式化简为了

inv[i] % M=(M−Mi)×inv[M % i] % Minv[i] % M=(M−Mi)×inv[M % i] % M

推导完毕。

复杂度O(n)O(n)

code:

void init(){
    inv[1] = 1;
    for(int i = 2; i <= n; i++)
        inv[i] = inv[M % i] * (M - M / i) % M;
}
CTF实战:Rabin密码系统原理、解密与变种攻防详解 公钥密码学中,整数分解难题是构建非对称加密体系的重要基础。Rabin密码系统作为一种基于模合数下求平方根困难性的公钥方案,其安全性被证明等价于大整数分解问题,这一点在理论密码学中具有重要意义。该算法通过简洁的平方运算实现加密,速度极快,但在解密时会产生四个候选明文,这是由其数学原理和中国剩余定理的应用所决定的。在实际工程中,这一特性需要通过填充方案或冗余校验来解决唯一性识别问题,常见于CTF竞赛和密码学教学实践。本文以一道典型CTF赛题为切入点,深入剖析Rabin的加解密流程、数学推导及实战中的常见变种与陷 阅读详情

相关推荐

【信息科学与工程学】计算机科学与自动化——第三篇 计算理论基础05 计算数论01

车联网(IoV)算法是支撑智能交通系统高效、安全运行的核心技术,涵盖通信调度、路径规划、数据处理、决策控制等多个维度。

weixin_49199313的博客 1297

C++ 线性筛逆元

O(n)求1到n所有数模p的逆元。

ixRic 1639

逆概率加权法(Inverse Probability Weighting, IPW)的原理及R实现

逆概率加权(IPW)是一种用于解释由于非随机选择观测值或人群信息的非随机缺失而造成的缺失和选择偏差的方法。原理:这种方法可以通过对观察值的加权来修正分析,使其具有被选中的概率。IPW是基于这样一个假设,即整个研究人群都有可以预测纳入概率(非遗漏)的个体信息,因此,在考虑到这些信息后,我们可以仅从非遗漏的观察值开始对整个目标人群进行推断。计算的程序如下:首先,我们考虑整个研究人群,用逻辑回归模型计算非失访信息的概率,其中响应是非失访,协变量是其可能的预测因素。每个受试者的权重是由预测概率的倒数给出的。然后使用

Christina 5万+

线性筛阶乘的逆元

typedef long long LL; const LL mod=1e9+7; const int maxn=3e5+10; const int N=3e5; int jie[maxn],ni[maxn]; void init() { jie[0]=jie[1]=1; for(int i=2;i&lt;=N;i++) jie[i]=1LL*jie[i-1...

Jiandong 758

PyQt5混搭qfluentwidgets实战:用FramelessWindow快速打造现代化界面

本文详细介绍了如何将PyQt5与qfluentwidgets组件库结合,利用FramelessWindow快速打造现代化无边框界面。通过环境配置、核心特性解析、组件混用技巧及高级样式定制,帮助开发者提升桌面应用的用户体验和美观度,特别适合需要现代UI设计的Python开发者。

sugar的博客 969

SPSS&Mplus—共同方法偏差(Common Method Bias)控制与检验

共同方法偏差(Common Method Bias)的控制方法:程序控制(Procedural)和统计控制(Statistical)。

m0_54401011的博客 1万+

逆元模版

费马小定律 const int mod = 1000000009; long long quickpow(long long a, long long b) { if (b &lt; 0) return 0; long long ret = 1; a %= mod; while(b) { if (b &amp; 1) ret = (ret * a...

aaakirito的博客 273

STM32F407编译下载全流程:从CubeMX到HEX烧录

嵌入式固件开发中,编译与下载是连接代码与硬件的关键闭环。其本质是将高级语言描述的逻辑,经交叉编译(ARM GCC)、链接(ELF生成)、格式转换(HEX/BIN)后,通过调试接口(SWD/UART)写入MCU Flash存储器的过程。该流程涉及工具链协同、二进制格式特性(如Intel HEX的地址映射与无元数据设计)、启动模式(System Memory Bootloader)、Flash选项字节(RDP/WRP)等底层机制,直接决定固件可运行性与安全性。典型应用场景包括STM32F407开发板调试、量产固

weixin_28840811的博客 260

数论 —— 逆元

【基本概念】 1.完全剩余系:模 m 的完全剩余系是 {0,1,2,...,n-1},记为:Zn,其中每个元素都代表与其同余的整数 2.简化剩余系:简化剩余系也称缩系,是模 m 的完全剩余系中与 m 互素的元素,记为:Zn* 3.同余等价类:将满足同余关系的所有整数称为同余等价类,Zn 中每个元素就是一个同余等价类 4.同余等价类的运算:在同余等价类中,由于每个元素都代表一个同余等价类,因...

Alex_McAvoy的博客 6963

实战指南 | Adjust 与 Facebook、Google Ads 自归因配置全流程解析

本文详细解析了Adjust与Facebook、Google Ads自归因配置的全流程,帮助移动应用出海推广者解决广告归因难题。通过自归因功能(SAN),开发者可以获取更准确的数据、简化配置流程并扩大安装来源覆盖,显著提升广告效果监测和ROI计算效率。

weixin_42528780的博客 536

【1】Java 部分笔试题解析

解析A.abstract关键字应该放在class关键字之前。C.抽象方法不能有方法体。D缺少了class关键字。

博客 3941

教你逐步将“快速幂低级求逆元”优化成“线性求逆元”(加例题《线性求逆元》《线性求逆元(2)》)

把“低级快速幂求逆元”变成“高级线性级别求逆元”,找详细。(包括例题《线性求逆元》《线性求逆元2》)

2302_77572353的博客 1035

2025爬虫实战:某音直播间实时弹幕获取原理及源码分析

某音直播弹幕虽然没有直接挂在 DOM 上,但由于用的是西瓜播放器,弹幕是通过 JS 接口动态渲染的,这就给了我们 Hook 的机会。关键点是找到调用的位置,然后拦截并输出对象里的message字段。这个思路其实也适用于其他前端渲染的播放器,比如 B 站的 DPlayer、HLS.js、甚至很多自研播放器都有类似结构。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1811

欧拉函数从定义到证明:数论公式推导与线性筛代码全解析

数论是算法竞赛与密码学的重要基石,而互质计数与剩余系概念则是理解数论函数的第一步。欧拉函数正是用于统计不超过正整数n且与其互质的数的个数,其通项公式的推导过程融合了容斥原理与质因数分解思想,并引出积性性质与欧拉定理。作为数论工具,欧拉函数广泛应用于模逆元求解、指数降阶、RSA加密及gcd计数问题。在工程实践中,单点欧拉函数可通过质因数分解在O(√n)内计算,而线性筛可在O(n)时间内预处理1到n的全部欧拉函数值,大幅提升求解效率。文章同时剖析了边界情况、欧拉降幂条件与实现细节,帮助读者从原理到代码彻底掌握这

weixin_34414650的博客 323

基于STM32L4XX、HAL库的MAX13487EESA RS485总线收发器驱动程序设计

MAX13487EESA是一款3.3V供电的RS-485/RS-422收发器,由Maxim Integrated生产。PA4 (控制引脚) ---> /RE, DE (连接在一起)具有±15kV ESD保护的驱动器输出和接收器输入。半双工RS-485/RS-422通信。工业温度范围:-40°C至+85°C。工作电压范围:3.0V至3.6V。数据速率高达250kbps。

zhusl6688的博客 685

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

[2016/8/2][暑假集训]数论基础

1.素数的判定 找1-n中的素数,有两种方法: ①O(nlogen) 开bool型数组a:i是合数,值为true;反之为false。 如果是素数,就把它放入素数队列,并把它所有的倍数标为true。 ②O(n) 开bool数组a,定义和上面的一样。 在哪里被筛出来只和其最小的素因数有关。 num = 0; memset(data, 0, sizeof(data)); data[1]

ZZURingo的博客 485

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

蓝桥杯Python解题:中国剩余定理与扩展欧几里得算法实战

中国剩余定理(CRT)是解决同余方程组的重要数论工具,尤其在模数不互质时需要结合扩展欧几里得算法。该算法不仅能计算最大公约数,还能求解贝祖等式,为密码学、信号处理等领域奠定基础。在算法竞赛如蓝桥杯中,这类问题常考察数学理论到代码的转化能力。通过Python实现扩展欧几里得与CRT的结合应用,可以高效解决寻找满足特定模数条件的最小正整数问题。实战中需注意模数处理、无解判断等边界情况,这正是算法竞赛的常见考点与难点。

weixin_33937913的博客 446

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

数论学习笔记

质数筛法,费马小定理、欧拉定理,逆元,扩欧,莫比乌斯反演

原原的博客 229

蒟蒻de数学笔记(持续更新)

数论 acwing 同名) 我做了好久啊 总结题解什么的太耗时间了。。 后面有手写笔记(关注内容,别关注我的字就好qwq) 质数 试除法判定质数 bool is_prime(int x) { if(x<2) return 0; for(int i=2;i<=x/i;i++) //i<=x/i等同于 i*i<=x 等同于i<=sqrt(x) if(x%i==0) return 0; return 1; } 分解质因数

qq_40465304的博客 361

蓝桥杯国赛数论冲刺:高频考点、解题定式与实战避坑指南

数论是算法竞赛中考察逻辑思维与数学建模能力的重要领域,其核心在于对整数性质的深刻理解和应用。从基本原理出发,最大公约数与最小公倍数的关系、素数的高效判定与筛法、同余与模运算构成了解决复杂问题的基石。这些技术不仅具有严密的理论价值,更是解决如组合计数、方程求解等实际工程与竞赛问题的关键工具。在算法竞赛,尤其是蓝桥杯国赛等高压场景下,掌握**数论题型**的快速识别与**解题定式**,能有效将数学结论转化为稳定、高效的代码,从而在时间有限的比赛中将数论从难点转化为稳定得分点。

weixin_30394669的博客 357

算法基础---数学知识

本篇主要是讲解算法中数论部分的知识。

qq_67458830的博客 1257

素数在 RSA 加密算法中的应用:从欧拉定理到 Java 公钥私钥的完整实战推导

本文以《程序员数学》系列中的素数专题为骨架,系统讲解素数的定义与判断、对称加密与非对称加密的差异,并完整推导 RSA 加密算法背后的数学公式(求模运算、欧拉定理、贝祖定理、中国余数定理、费马小定理),最终给出可直接运行的 Java 实现与测试用例。读完本文,你将理解 HTTPS/SSL 证书与素数之间的关系,能够从数学原理到代码实现,完整复现一套 RSA 公钥与私钥的生成、加密与解密流程。 ##

gitblog_00685的博客 349

CTF中Sylvester结式法实战:多项式公共根快速判定与求解

多项式公共根问题是代数求解的基础任务,其核心原理在于利用结式(Resultant)将根的存在性判定转化为行列式是否为零的线性代数问题。Sylvester矩阵作为构造结式的标准工具,通过系数排布实现消元逻辑,在整数环或有限域GF(p)上保持代数确定性,规避浮点误差与因式分解失败风险。该方法在CTF工程实践中展现出独特技术价值:无需数值近似、不依赖猜测、抗编码干扰,特别适用于Web112、pwn074等题型中由HTTP头、SQL注入或动态内存生成的隐写多项式约束。典型应用场景包括双约束整数解提取、模p存在性验证

weixin_34037173的博客 434

NTRU后量子密码实战:从数学原理到Python实现与工程优化

后量子密码(Post-Quantum Cryptography)旨在抵抗量子计算机攻击,其核心原理多基于格问题等数学难题。NTRU作为格密码的典型代表,在多项式环上构建加解密流程,具备密钥尺寸小、运算速度快等优势,技术价值在于为长期数据保密提供抗量子安全方案。在物联网、嵌入式设备及混合加密系统等场景中,NTRU可有效替代RSA/ECC。围绕NTRU的参数选择、密钥生成、加解密流程及安全分析,结合Python实现与性能测试,可帮助开发者在实际项目中评估与落地这一后量子密码算法。

weixin_34389926的博客 332

数论合集

数论合集 文章目录前言模板与定理质数质数的分布质数的筛选质因数分解-算数基本定理约数算数基本定理推论试除法及其推论倍数法及其推论最大公约数/最小公倍数九章算术-更相减损术欧几里得算法互质与欧拉函数欧拉函数性质同余整除与同余关系同余性质相关概念费马小定理与欧拉定理费马小定理欧拉定理证明欧拉定理推论扩展欧几里得算法Bezout 定理乘法逆元线性同余方程中国剩余定理(CRT)高次同余方程:BSGS算法组合计数排列数组合数常见的组合数问题与技巧隔板法二项式定理多重集的排列数多重集的组合数Lucas定理Catalan

weixin_46304837的博客 459

【暖*墟】#数论# 数论知识点综合

一、数论基本概念1、整除性2、素数a.素数与合数b.素数判定c.素数定理d.素数筛选法3、因数分解a.算术基本定理b.素数拆分c.因子个数d.因子和4、最大公约数(GCD)和最小公倍数(LCM)5、同余a.模运算b.快速幂取模c.循环节 二、数论基础知识1、欧几里德算法(辗转相除法)2、扩展欧几里德定理a.线性同余b.同余方程求解c.逆元3、中国剩余定理(孙子定理)4、欧拉函数a.互素b.筛选法求...

flora715的博客 1267
上一篇: Swordsman HDU - 6396(优先队列+输入外挂)
下一篇: GuGuFishtion HDU - 6390(莫比乌斯反演+线性求逆元)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值