中国剩余定理(孙子定理)

中国剩余定理,源于《孙子算经》,也称孙子定理,与韩信点兵问题相关。该定理涉及同余方程组的解法,通过分析找到满足特定余数条件的数。例如,寻找满足3、5、7除余特定数的解。解题过程中,通过转化方程,找到各因子的公倍数,并利用模运算的逆元求解。此定理在数论及密码学等领域有广泛应用。
摘要由CSDN通过智能技术生成

中国剩余定理(孙子定理)

1.来源

该定理出自《孙子算经》的问题:“今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?”也有一说为韩信点兵

2.分析过程

分析该题的性质,可将该题转化为S=3*k1+2=5*k2+3=7*k3+2的式子。设n1=3*k+2,n2=5*k+3,n3=7*k+2,因为n1除以3余2,如果使n1+n2也满足除以3余2,进而使得n1+n2+n3的和也满足除以3余2,那么n2的值应为3的倍数(因为n1+3k mod 3=2,k为随机的正整数),n3同理。所以再从n2,n3的角度出发,可以得到:
a. 为使n1+n2+n3的和满足除以3余2,n2和n3必须是3的倍数。
b. 为使n1+n2+n3的和满足除以5余3,n1和n3必须是5的倍数。
c. 为使n1+n2+n3的和满足除以7余2,n1和n2必须是7的倍数。
最终,若使得n1+n2+n3为孙子问题的一个解,则需要满足:
a. n1 除以3余2,且是5和7的公倍数。
b. n2 除以5余3,且是3和7的公倍数。
c. n3 除以7余2,且是3和5的公倍数。
所以,孙子问题解法的本质是从5和7的公倍数中找一个除以3余2的数n1,从3和7的公倍数中找一个除以5余3的数n2,从3和5的公倍数中找一个除以7余2的数n3,再将三个数相加得到解。
在求n1,n2,n3时又用了一个小技巧,以n1为例,并非从5和7的公倍数中直接找一个除以3余2的数,而是先找一个除以3余1的数(通过公式(5*7)*b≡1(mod 3)求出的b),再乘以2(b*2只满足了mod 3余2),再乘以5*7(到这一步才满足了既mod 3余2,又是5和7的倍数),才得到n1。也就是先求出5和7的公倍数模3下的逆元,再用逆元去乘余数。证明这个技巧需要用到一个公式:
如果a%b=c,那么:
(a∗k)%b=a%b+a%b+…+a%b=c+c+…+c=k∗c(k>0,且k*c应该小于b)
最后,n1+n2+n3只是问题的一个解,不一定就是最小解,将n1+n2+n3变为最小解的方法则是(n1+n2+n3)mod (3*5*7)。依据的方法则是若a%b=c,则有(a-k*b)%b=c。
综上,可知中国剩余定理的公式如下:
有同余方程组如下:
x≡a1(mod m1)
x≡a2(mod m2)
x≡a3(mod m3)
x≡a4(mod m4)
……
x≡an(mod mn)
且有条件:m1、m2、m3、……、mn互素,则有公式:
x=(a1*M1*M1-1+a2*M2*M2-1+a3*M3*M3-1+……+an*Mn*Mn-1)mod (M)
M=m1*m2*m3*……*mn
Mi=M/mi

参考链接:
中国剩余定理学习笔记

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值