「数论基础」 乘法逆元

定义:若$ab ≡ 1\ (mod\ p)$,则称$b$是$mod\ p$意义下$a$的乘法逆元

  可以将逆元记作$inv$,则$a * inv ≡ 1\ (mod\ p)$

  其实定义反过来也是成立的,即$a$是$mod\ p$意义下$b$的乘法逆元

乘法逆元的意义:

  模运算中的除法是不符合四则运算法则的,然而加减乘都符合。所以数学家们利用乘法逆元来完成除法的需求。

  完成除法的工作——经典应用:求解$a / b \% p\  (b | a)$

  方法:

    设$a / b \% p = r$

    则$a / b = k * p + r$

    既然左右两项相等,则很明显$a / b ≡ k * p + r\ (mod\ p)$,不过先不管。

    既然要把$/ b$换成逆元,设 $b * inv ≡ 1\ (mod\ p)$

    同时乘以$b$,$a = k * b * p + r * b$

未完待续……

原文地址:https://www.cnblogs.com/qixingzhi/p/9332813.html

时间: 2024-11-08 22:52:34

「数论基础」 乘法逆元的相关文章

「数论基础」欧拉定理(费马小定理)

在阅读本篇之前,如果还不熟悉欧拉函数,可以参见另一篇介绍欧拉函数的「数论基础」欧拉函数. 定义:对于互质的两个正整数$a, n$,满足$a^{φ(n)} ≡ 1\  (mod\ n)$ 证明: 设集合$S$包含所有$n$以内与$n$互质的数,共有$φ(n)$个:     $S = \{ x_1, x_2, ..., x_{φ(n)} \} $ 再设集合$T$: $T = \{ a * x_1 \% n, a * x_2 \% n, ..., a * x_{φ(n)} \% n \} $ 由于$

数论学习之乘法逆元

用法:用于除法取模 思路:扩欧 要求:b.p互质 设k为b的乘法逆元: 则在求解除法取模问题时: 有(a/b)%p =>(a*k)%p 当b很大时,用除法会出现精度问题..so 乘法逆元: 如果b*k ≡ 1 (mod p) 则称k是b关于p的乘法逆元 我们可以通过求 b 关于 p 的乘法逆元 k,将 a 乘上 k 再模 p,即 (a * k) mod p.其结果与(a / b) mod p等价. 证: 因为 b * k ≡ 1 (mod p) 则有 b * k = p* x+1 得到 k =

「C基础」C运算符的优先级

一.运算符的优先级表 C 语言的符号众多,由这些符号又组合成了各种各样的运算符.既然是运算符就一定有其特定的优先级,下表就是C 语言运算符的优先级表: 注:同一优先级的运算符,运算次序由结合方向所决定.  上表不容易记住.其实也用不着死记,用得多,看得多自然就记得了.也有人说不用记这些东西,只要记住乘除法的优先级比加减法高就行了,别的地方一律加上括号.这在你自己写代码的时候,确实可以,但如果是你去阅读和理解别人的代码呢?别人不一定都加上括号了吧?所以,记住这个表,我个人认为还是很有必要的. 二.

「ZigBee模块」协议栈-Z-Stack协议栈基础和数据传输实验

花了好久写的...感觉还不错的呢...如果看,请细看...Mua~ Z-Stack协议栈基础和数据传输实验 一.实验目的 终端节点将数据无线发送到协调器,协调器通过串口将数据发送到PC端,并在屏幕上显示出来.串口优化把有线串口传输改为无线蓝牙传输. 二.实验平台 硬件:2个zigbee节点,1个编译器,1根方口转USB数据线,一个蓝牙模块 软件:实验基于SampleApp工程进行. 三.实验步骤 串口初始化代码 发送部分代码 接收部分代码 四.协议栈基础 做实验之前先了解一点关于协议栈的基础知识

「一」创建一个带 ssh 服务的基础镜像(修订版)--使用「docker commit」创建

在介绍如何创建带 ssh 服务的基础镜像之前,我们想回顾一下之前介绍过的内容,其中提到有三种创建镜像的常用办法: 从文件系统导入 从现有容器使用「docker commit」提交 使用 dockerfile 文件 build 本章将主要介绍后面 2 种方法. 步骤如下: $ sudo docker run -ti ubuntu:14.04 /bin/bash #首先,使用我们最熟悉的 「-ti」参数来创建一个容器. [email protected]:/# sshd bash: sshd: co

数论入门2——gcd,lcm,exGCD,欧拉定理,乘法逆元,(ex)CRT,(ex)BSGS,(ex)Lucas,原根,Miller-Rabin,Pollard-Rho

数论入门2 另一种类型的数论... GCD,LCM 定义\(gcd(a,b)\)为a和b的最大公约数,\(lcm(a,b)\)为a和b的最小公倍数,则有: 将a和b分解质因数为\(a=p1^{a1}p2^{a2}p3^{a3}...pn^{an},b=p1^{b1}p2^{b2}p3^{b3}...pn^{bn}\),那么\(gcd(a,b)=\prod_{i=1}^{n}pi^{min(ai,bi)},lcm(a,b)=\prod_{i=1}^{n}pi^{max(ai,bi)}\)(0和任何

微信小程序开发基础(一)「配置」与「逻辑层」

微信小程序作为微信生态重要的一环,在实际生活.工作.商业中的应用越来越广泛.想学习微信小程序开发的朋友也越来越多,本文将在小程序框架的基础上就微信小程序项目开发所必需的基础知识及语法特点进行了详细总结和阐述,包括配置.函数.语法.事件及其处理.数据绑定.模块.样式等.想开发小程序,这些内容是必须掌握的. 全文知识结构预览: 一.程序配置: 1.全局配置:2.页面配置 二.逻辑层: 1.程序注册:App()方法:2.页面注册:Page()方法:3.模块与调用:4.微信原生API 三.视图层(将在单

「HTML+CSS」css基础属性

当权重相等,后来先到覆盖 颜色 div{ border:100px solid black; width: 0px; height: 0px; border-left-color: blue; border-left-color: transparent; border-top-color: transparent; border-bottom-color: transparent; } 「HTML+CSS」css基础属性 原文地址:https://www.cnblogs.com/apelles

数论--乘法逆元

乘法逆元 定义: 满足a*k≡1 (mod p)的k值就是a关于p的乘法逆元. 为什么要有乘法逆元呢?当我们要求(a/b) mod p的值,且a很大,无法直接求得a/b的值时,我们就要用到乘法逆元. 我们可以通过求b关于p的乘法逆元k,将a乘上k再模p,即(a*k) mod p.其结果与(a/b) mod p等价. 证:(其实很简单...) 根据b*k≡1 (mod p)有b*k=p*x+1. k=(p*x+1)/b. 把k代入(a*k) mod p,得: (a*(p*x+1)/b) mod p