1. 程式人生 > >淺談逆元及其求法(費馬小定理&Exgcd)

淺談逆元及其求法(費馬小定理&Exgcd)

前言

逆元其實是一個很小的知識點,但是在數論中也起到了比較大的作用。這篇文章主要是介紹逆元,和它在一些其他方面的應用。可能我在證明的過程中會出現一些錯誤,如果你在看這篇文章的過程中發現了問題,歡迎在私信或評論中指出!

What is 逆元

我們想一個問題,如果我們要求在modm下求a/b的答案,這顯然很簡單。但是當b變到很大的時候,樸素的做法就會“砰”的一聲爆炸!!如何解決這類問題呢,我們可以試著將出發轉化為乘法。
我們假設c為b在modm意義下的逆元。
b·c1(modm)c·b=1(modm)
所以

a/bmodm

=a/b·1modm
=a/b·b·cmodm
=a·cmodm
所以a/bmodm就轉換成了a·cmodm

如何求逆元

1)費馬小定理;
首先再說這個方法前,我們先回顧一下費馬小定理。費馬小定理為apa(modp)(p為素數,且ap互質)。
則可以證明:

apa(modp)a·ap1a(modp)ap11(modp)a·ap21(modp)
所以對於一個數
a
,其在modp意義下的逆元為ap2
快速冪求解,時間複雜度是O(logn)

2)擴充套件歐幾里得演算法;
首先我們還是要分析一個問題,假設我們有一個這樣的式子4X1(mod7),那麼我們是否可以把式子轉化為4X=7K+1。於是乎我們就可以把式子轉換為4X7K=1,我們就可以通過擴充套件歐幾里得的方法來找出整數解XK,最後X就是在mod7意義下與4的逆元。這種方法的時間複雜度依舊是O(logn)

後記

其實逆元真的很簡單,這篇文章只是一個證明及總結,程式碼我沒有放,但是非常的好寫。