日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[数论] 求逆元

發布時間:2024/9/5 编程问答 83 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [数论] 求逆元 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

逆元

?何為逆元

方程ax≡1(mod? p),的解稱為a關于模p的逆,當gcd(a,p)==1(即a,p互質)時,方程有唯一解,否則無解。

逆元有對稱性,x是a關于b的逆元,那a也是x關于b的逆元。

?

線性遞推求逆元

線性求從1到n的$mod \ p$ 的逆元

設$p=ki+r \ (r<i<p,i>1)$? ①

可以得到

$k=\lfloor \frac{p}{i} \rfloor$? ②

$r=p \ mod \ i$? ③

$ki+r\equiv 0 (mod \ p)$? ④

兩邊同乘$i^{-1}\cdot r^{-1}$得

$kr^{-1}\cdot i^{-1}\equiv 0 (mod \ p)$

移項得$i^{-1}\equiv -kr^{-1} (mod \ p)$? ⑤

將②③代入⑤

得 $i^{-1}\equiv -\lfloor \frac{p}{i} \rfloor\cdot (p \ mod \ i)^{-1}(mod \ p)$

由于$1^{-1}\equiv 1 (mod \ p)$

所以1到n $mod \ p$逆元就可以線性遞推出來了

?代碼

1 inv[1]=1; 2 for(int i=2;i<=n;i++) 3 inv[i]=-(p/i)*inv[p%i]; 線性求逆元

?

擴展歐幾里得求逆元

?先行知識:擴展歐幾里得

exgcd求的是 $ax+by=gcd(a,b)$? 的一組解

1)首先看當b==0,也就是$gcd(a,b)=gcd(a,0)=a$時

$ax+by=a$

得$x=1$

2)我們設

$ax_{1}+by_{1}=gcd(a,b) $ ①

$bx_{2}+(a$%$b)y_{2}=gcd(b,a$%$b)$ ②

由于 $gcd(a,b)=gcd(b,a$%$b)$?

所以①②左邊相等

$ax_{1}+by_{1}=bx_{2}+(a$%$b)y_{2}$

$ax_{1}+by_{1}=(a-\lfloor \frac{a}{b} \rfloor\cdot b)y_{2}$

$ax_{1}+by_{1}=ay_{2}+(x_{2}-\lfloor \frac{a}{b} \rfloor\cdot y2)b$

?得到

$x_{1}=y_{2}$

$y_{1}=x_{2}-\lfloor \frac{a}{b} \rfloor \cdot?y_{2}$

也就是說我們根據x2,y2便可推導出x1,y1的值,只要將a,b換成b,a%b即可,和gcd算法類似這是一個遞歸的過程

既然是遞歸,那我們就要找一個出口,恰好①情況,當b變為0時,我們就可以退出了。

當a,b互質也就是 $gcd(a,b)=1$時

$ax+by=gcd(a,b)=1$

即為$ax=1-by$

所以$ax \ (mod \ b)\equiv (1-by)(mod \ b)\equiv1(mod \ b)$

所以$ax\equiv1(mod \ b)$,x為$a \ mod \ b$的逆元

同理可得y為$b \ mod \ a$的逆元

?代碼

1 ll exgcd(ll a,ll b,ll &x,ll &y) 2 { 3 if(b==0) 4 { 5 x=1,y=0; 6 return a; 7 } 8 ll r=exgcd(b,a%b,y,x),temp; 9 y -= (a/b)*x; 10 11 return r; 12 } 13 14 ll inv(ll a,ll b) 15 { 16 ll r=exgcd(a,b,x,y); 17 while(x<0) 18 x+=b; 19 return x; 20 } exgcd求逆元

?

費馬小定理求逆元

?先行知識:費馬小定理

假如p是質數,且gcd(a,p)=1,那么 $a^{p-1}≡1(mod \ p)$,

即:假如a是整數,p是質數,且a,p互質,那么a的(p-1)次方除以p的余數恒等于1。

費馬小定理求逆元的先行條件是p是素數

$a^{p-1}\equiv 1(mod \ p)$

即 $a\cdot a^{p-2}\equiv 1(mod \ p)$

所以a關于p的逆元就是 $a^{p-2}$

一般利用快速冪求解

?

?代碼

1 ll qpow(ll a,ll b,ll p) 2 { 3 ll res=1; 4 while(b) 5 { 6 if(b&1) 7 res=res*a%p; 8 a=a*a%p; 9 b>>=1; 10 } 11 return res; 12 } 13 ll inv=qpow(a,p-2,p); 費馬小定理求逆元

?

轉載于:https://www.cnblogs.com/MMMinoz/p/11384877.html

總結

以上是生活随笔為你收集整理的[数论] 求逆元的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。