同余与二元一次方程求解(下)

同余方程 a x ≡ 1 ( m o d m ) a x \equiv 1 \pmod {m} ax1(modm) 的解,为 a a a m m m的逆,记为 a − 1 a^{-1} a1。上一篇说到这个同余方程有解的条件是 g c d ( a , m ) = 1 gcd(a,m)=1 gcd(a,m)=1,以下说到的逆都是在这个条件下。
求逆可以用扩展欧几里得或者费马小定理(条件: m m m是素数)

逆元与除法取模

我们知道取模操作满足以下性质

(a+b)mod m = ((a mod m)+(b mod m))mod m
(a-b)mod m = ((a mod m)-(b mod m))mod m
(a*b)mod m = ((a mod m)*(b mod m))mod m

但是对除法取模进行类似的操作是错误的,例如
( 60 / 4 ) ( m o d 25 ) = 15 (60/4) \pmod{25}= 15 (60/4)(mod25)=15
( ( 60 ( m o d 25 ) ) / ( 4 ( m o d 25 ) ) ) ( m o d 25 ) = 2 ((60 \pmod{25})/(4 \pmod{25})) \pmod{25} = 2 ((60(mod25))/(4(mod25)))(mod25)=2
这里就需要用到逆元, 4 4 4 25 25 25 的逆是 19 19 19
( 60 ∗ 19 ) ( m o d 25 ) = 1140 ( m o d 25 ) = 15 (60*19)\pmod{25}=1140\pmod{25}=15 (6019)(mod25)=1140(mod25)=15

b b b m m m的逆是 d d d,所以 b ∗ d ( m o d m ) = 1 b*d\pmod{m} = 1 bd(modm)=1
( a b ) ( m o d m ) = ( a b ) ( m o d m ) ∗ ( b d ) ( m o d m ) = ( a b b d ) ( m o d m ) = ( a d ) ( m o d m ) (\frac{a}b)\pmod{m} =(\frac{a}b)\pmod{m}*(bd)\pmod{m}=\left(\frac{a}bbd\right)\pmod{m}=(ad)\pmod{m} (ba)(modm)=(ba)(modm)(bd)(modm)=(babd)(modm)=(ad)(modm)
把除法取模转化成乘法取模

逆元与求解二元一次线性方程 a x + m y = b ( a x ≡ b ( m o d m ) ) ax+my=b(a x \equiv b\pmod {m}) ax+my=b(axb(modm))

得到逆之后就可以求形如 a x ≡ b ( m o d m ) a x \equiv b\pmod {m} axb(modm)的任意同余方程
a ′ a' a a a a m m m的逆, a ′ a ≡ 1 ( m o d m ) a'a\equiv1\pmod{m} aa1(modm)
a x ≡ b ( m o d m ) a x \equiv b\pmod {m} axb(modm)的左右同乘以 a ′ a' a,得到 a a ′ x = a ′ b ( m o d m ) , x ≡ a ′ b ( m o d m ) aa'x=a'b\pmod{m},x\equiv a'b\pmod{m} aax=ab(modm),xab(modm)

例如求 6 x ≡ 40 ( m o d 23 ) 6x\equiv40\pmod{23} 6x40(mod23) , 6 ,6 ,6 23 23 23的逆是 4 4 4,所以 x = 4 ∗ 40 ( m o d 23 ) = 22 x=4*40\pmod{23}=22 x=440(mod23)=22

转一个代码注释

/*
--------------------佛祖保佑,永无bug--------------------
	                   _ooOoo_
	                  o8888888o
	                  88" . "88
	                  (| -_- |)
	                  O\  =  /O
	               ____/`---'\____
	             .'  \\|     |//  `.
	            /  \\|||  :  |||//  \
	           /  _||||| -:- |||||-  \
	           |   | \\\  -  /// |   |
	           | \_|  ''\-/''  |   |
	           \  .-\__  `-`  ___/-. /
	         ___`. .'  /-.-\  `. . __
	      ."" '<  `.___\_<|>_/___.'  >'"".
	     | | :  `- \`.;`\ _ /`;.`/ - ` : | |
	     \  \ `-.   \_ __\ /__ _/   .-` /  /
	======`-.____`-.___\_____/___.-`____.-'======
	                   `=-='
*/
  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值