CRT:某一范围整数可以通过它的一组剩余类数来重构,这组剩余类数是对该整数用一组两两互素的整数取模得到。
功能:使得模M的大数运算转化到更小的数上来进行运算,当M为150位或150位以上时,这种方法非常有效,但我们需要事先分解M
上面说的有点悬乎,那我们举个例子看看:
Z10(0,1,2,3....9)中的10个整数可通过它们对2和5(10的两个因子)取模所得的两个余数来重构。假设已知十进制数x的余数r2=0且
r5=3,即 x mod 2=0 且x mod 5=3,则x是Z10中的偶数且被5除余3,故唯一解为 x=8
再举个正式的CRT实例,经常用到,掌握下面这个例子CRT基本也就掌握了
将973 mod 1813表示为模37和49的两个数。
我们定义: m1=37, m2=49, M=1813, A=973
先分解M,则M1=49 且M2=37,
再利用扩展的欧几里得算法有M1^-1=34 mod M1且 M2^-1=4 mod M2, 每个Mi和Mi^-1只需计算一次就行,
对37和49取模,因为 973 mod 37=11,972 mod 49=42, 所以973可以表示为(11,42)