逆元+费马小定理+扩展欧几里得
生活随笔
收集整理的這篇文章主要介紹了
逆元+费马小定理+扩展欧几里得
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
逆元:(即是逆元素)逆元素是指一個(gè)可以取消另一給定元素運(yùn)算的元素。
在一個(gè)代數(shù)系統(tǒng)(S,*)中,存在單位元素e,如果對(duì)S內(nèi)的元素a存在a^-1 * a = e,則將 a^-1稱(chēng)為a 的左逆元。
同理若存在 a * a^-1 = e,則將a^-1 稱(chēng)為a 的右逆元。
這里的左逆元和右逆元是針對(duì)給定運(yùn)算的某個(gè)元素而言的。我們說(shuō)某個(gè)元素有沒(méi)有逆元素,而不能說(shuō)某個(gè)代數(shù)系統(tǒng)有沒(méi)有逆元素。 另外還需要說(shuō)明: (1)一個(gè)元素可以沒(méi)有左逆元和右逆元; (2)一個(gè)元素可以只有左逆元; (3)一個(gè)元素可以只有右逆元; (4)一個(gè)元素可以既有左逆元,又有右逆元。左右逆元素相等且唯一的條件是:
1)運(yùn)算有單位元素; 2)元素a的左右逆元素都存在; 3)滿(mǎn)足結(jié)合律。 通過(guò)以上分析,我們得出如下定理: 定理1 ?設(shè) ? 為S上可結(jié)合的二元運(yùn)算,e為該運(yùn)算的單位元,對(duì)于x∈S,如果存在左逆元?和右逆元??,則有且y是x的唯一的逆元。 ? 在求解 (a+b)%c, (a-b)%c, (a*b)%c 的時(shí)候,無(wú)論a,b,c多大,都可以轉(zhuǎn)換成 a%c + b%c, a%c-b%c, a%c*b%c,然后直接進(jìn)行運(yùn)算。 但是在算 (a / b)%c 的時(shí)候,并不能直接轉(zhuǎn)化成 a%c / (b%c)。 比如 5 / 2 % 3,在進(jìn)行正常的運(yùn)算時(shí): 5/2 = 2 , 2%3 = 2,所以結(jié)果應(yīng)該是 2 如果轉(zhuǎn)化成 (5%3)/(2%3)= 2 / 2 = 1,所以結(jié)果變成了1。 費(fèi)馬小定理: 假如p 時(shí)一個(gè)質(zhì)數(shù),且gcd(p ,1) = 1,那么 a^(p-1)?≡ 1 (mod p) a / b % c ≡ a * b^-1 % c?≡ a %c * b^-1 % c,其中 b^-1 為b 的逆元,當(dāng)c是個(gè)素?cái)?shù),且b不是c的倍數(shù)的時(shí)候: b ^(c - 1)?≡ 1 (mod c),b * b^(c-2)?≡ 1 (mod c),于是b 的逆元就是 b^(c-2) 。 當(dāng)c比較大的時(shí)候,需要用快速冪。 擴(kuò)展歐幾里得: 給定模數(shù)m,求a的逆相當(dāng)于求解a*x=1(mod m)
這個(gè)方程可以轉(zhuǎn)化為a*x-m*y=1?
然后套用求二元一次方程的方法,用擴(kuò)展歐幾里得算法求得一組x0,y0和gcd?
檢查gcd是否為1?
gcd不為1則說(shuō)明逆元不存在?
若為1,則調(diào)整x0到0~m-1的范圍中即可 1 LL inv(LL t, LL p) 2 { 3 if(t == 1) 4 return 1; 5 return (p - p / t) * inv(p % t, p) % p; 6 }
這是求t關(guān)于p 的逆元。
轉(zhuǎn)載于:https://www.cnblogs.com/ouyang_wsgwz/p/8688255.html
總結(jié)
以上是生活随笔為你收集整理的逆元+费马小定理+扩展欧几里得的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: BZOJ1010 [HNOI2008]玩
- 下一篇: Ambari 2.6.0 HDP 2.6