乘法逆元 java_乘法逆元
轉自:https://www.bilibili.com/video/BV12E411c7QH
≡
一,引入
(a+b)%p = (a%p + b%p) %p
(a - b) %p = ( a%p + b%p) %p
(a * b) %p = ( a%p * b%p) %p
(a / b) %p = ( a%p / b%p) %p
上式中,第四個是不成立的,即除法不存在逆元。這就讓計算?(a / b) %p 變的十分復雜,
因為:
① 分配律的好處:可以在大數運算時候先取余讓數變小,在進行加減乘運算
② 除法的弊端 :除法會掉精度
于是就有人想出乘法的逆元來解決這個問題。
二,乘法逆元
1,定義:若在 mod p 的情況下,對于一個整數 a,有 a*x?≡ 1 (mod p),那么這個整數 x 即為 a 的乘法逆元,同時 a 也為 x 的乘法逆元 ? ( ?≡ 表示 同余;(mod p) 表示? 該式子在兩邊都 mod p 的情況下成立)
2,充要條件:a 存在 mod p 的乘法逆元的充要條件是 gcd ( a , p ) = 1,即 a 與 p 互質。
3,應用:求取?(a / b) %p。該值 等同與 a*(b 的逆元) % p
4,證明:( a/b ) % p = a*(b 的逆元) % p
設 b 的逆元 為 x,則? b*x ≡ 1 ( mod p ),可以把 x 認為是? b 在數論上的倒數
式子 ① :(a / b) %p = m,即(a / b)≡? m (mod p)
將 ① * b * x 得:? ?a * x %p = m * b * x %p,
因為:b*x ≡ 1 ( mod p )
所以有:a * x??≡ m ( mod p )
所以有:a * x??≡ m ≡?a / b? ( mod p )
5,費馬小定理
可以用來求 b 的逆元:
費馬小定理:假如 a 是一個整數, p 是一個質數(在競賽通常 p 為 質數,因為 p 不為質數時容易找到余數的規律),那么
1,如果 a 是 p 的倍數,a^p?≡ a (mod p)
2,如果 a 不是 p 的倍數,a^(p-1)?≡ 1 (mod p)
同余式:a?≡ b (mod n) 表示 a,b 都模 n 后的值相等
因為 乘法逆元必須滿足,a p 互質,所以只需要考慮第二種情況。
由 2 可得:a * a^(p-2)?≡ 1 ( mod p )
所以 a%p * (a^(p-2) % p) = 1 %p
即?a^(p-2) % p 為 a 的逆元,其中 p-2 次方可用快速冪求解。
6,總結:
( a/b ) % p = a*(a^(p-2) % p) % p
=========== ========== ========= ========= ======== ====== ==== === == =
水調歌頭 (宋)辛棄疾
我飲不須勸,正怕酒尊空。別離亦復何恨,此別恨匆匆。
頭上貂蟬貴客,花外麒麟高冢,人世竟誰雄。一笑出門去,千里落花風。
孫劉輩,能使我,不為公。余發種種如是,此事付渠儂。
但覺平生湖海,除了醉吟風月,此外百無功。毫發皆帝力,更乞鑒湖東。
總結
以上是生活随笔為你收集整理的乘法逆元 java_乘法逆元的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TOF深度相机数据到点云转换(一)
- 下一篇: 微信小程序js过度动画