扩展欧几里得算法 & 欧拉定理 求乘法逆元(无代码,仅示例计算方法)

目录

1 模m可逆元定义

2 扩展欧几里得算法求逆元

3 欧拉定理求逆元


1 模m可逆元定义

设m是一个正整数,a是一个整数。如果存在整数 a' 使得       a * a' = a' * a = 1 (mod\quad m)     成立,则 a 叫做 模 m 可逆元.

存在条件a、m 互素

在模 m 的意义下,a' 是惟一存在的。这时 a'  叫做 a 的 模 m 逆元,记作   a' =a^{-1} (mod\quad m)

2 扩展欧几里得算法求逆元

由于x*y\equiv1(mod \quad P) \Leftrightarrow xy+kP=1(k\in Z)  ,则满足方程ax+by=1的 x 即为 a 模 b 的逆元(同时 y 为 b 模 a 的逆元)。那么只需要使用扩展欧几里得求解,时间复杂度 O(logP) 。

例1:简单点,求5模26的逆元。

26=5*5+1,1=26-5*5,于是 5 模 26 逆元 就是 (-5)mod 26 \equiv 21


例2:复杂一丢丢, 设 a=46480,b=39423,求 x=b^{-1}(mod\46480)

然后再继续逆过来。

则 39423 模 46480 的逆元就是 t = 26767。

其实求逆元就是在(a,b)=1 的情况下   , 求贝祖等式的s,t 。


3 欧拉定理求逆元

由欧拉定理 x^{\varphi (n)}\equiv 1(mod\, P) 可以得到,x*x^{\varphi (P)-1}\equiv 1(mod\,P),那么逆元即为 x^{\varphi (P)-1}

具体 欧拉函数求法 可以点进链接看。

欧拉函数求法步骤如下

(1)先化为标准分解式形式

(2)再依照下式规则计算


例如:

再例如:

2020 = 2^2*5^1*101^1,然后

\varphi (2020)\newline=2^{2-1}*(2-1)*5^{1-1}*(5-1)*101^{1-1}*(101-1)\newline=2*1*1*4*1*100\newline=800


例:简单点,求5模26的逆元。

k^{-1}\equiv 5^{\varphi (26)-1}\equiv 5^{11} mod 26,又因为5^2\equiv -1(mod 26),所以k^{-1}\equiv 5^{11}\equiv (-1)^5*5\equiv -5\equiv 21(mod 26)


说实话,求个逆元涉及到了信息安全数学基础的很多知识,如果在欧拉函数求逆元的过程中,遇到了大整数高次模,又要用模重复平方法之类的方法。

  • 7
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值