版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhangzhengyi03539/article/details/80274599
中国国剩余定理,又名孙子定理,是中国古代求解一次同余式组的方法。当前可用于解决密码学中的秘密共享问题,也可以用来解决布隆过滤器的false positive问题。
1. 中国剩余定理
如果,有如下一元线性同余方程组
(pi为素数)
⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪x≡a1(modp1)x≡a2(modp2)...x≡an(modpn)(1)
方程的解为
x=(∑ni=1aitiMi)+kM(2)
其中
M=∏ni=1pi,Mi=M/pi,ti=M−1i(modpi)
由解的周期性可知,
[0,m]
内有且仅有一个解。
2. 扩展欧几里得算法
辗转相除法可以很方便的求解两个数的最大公约数,如果把求解过程中记录下来就可以用于求解方程
ax+by=gcd(a,b)
,这个方法可以用于求解上面涉及到的
ti
,
ti=M−1i(modpi)
即
ti×Mi≡1(modpi)(3)
所以只需要求解
xMi+ypi=1=gcd(Mi,pi)(4)
ti=x(5)