假如當前計算的是x在%p意義下的逆元,設$p=kx+y$,則
$\large kx+y\equiv 0(mod\ p)$
兩邊同時乘上$x^y^$(這裡代表逆元)
則方程變為$\large k*y^+x^\equiv 0(mod\ p)$
化簡得$\large x^\equiv -k*y^(mod\ p)$
$\large x^\equiv -\biggl\lfloor\frac\biggr\rfloor *(p\ mod\ x)^(mod\ p)$
結果為$\large x^\equiv (p-\biggl\lfloor\frac\biggr\rfloor )*(p\ mod\ x)^(mod\ p)$
除了1,p mod x一定小於x,它的逆元已經算過,所以可以線性求出逆元
void inverse(int p,int a,int n)}
乘法逆元 線性求mod p的所有數逆元
逆元存在的 求單個逆元,一般用快速冪或者擴充套件歐幾里得演算法,複雜度為log p 若是遞推求解所有逆元,複雜度為線性。前幾天在看 lucas 定理的時候發現要求 1,2 p 1modp 1,2,p 1modp 的逆元,然後就看到了乙個 n n 的做法發現太神了,雖然想起來是挺簡單的 這個做法實際上...
數論 線性求所有逆元的方法
前幾天在看 lucas 定理的時候發現要求 1,2 p 1modp 1,2,p 1modp 的逆元,然後就看到了乙個 n n 的做法發現太神了,雖然想起來是挺簡單的 這個做法實際上是這樣的,首先 1 1 1 modp 1 1 1 modp 然後我們設 p k i r r1 i p p k i r,r...
Lucas定理 線性求所有逆元的方法
主要繞過費馬小定理來證明lucas定理,挺有意思.此外設定多進製計算機可以通過移位運算直接加快多進製運算的速度。1.lucas定理 lucas定理解決的問題是組合數取模。數學上來說,就是求 n m modp 這裡n,m 可能很大,比如達到 1015,而p 在109以內。顯然運用常規的階乘方法無法直接...