中国剩余定理
用来解决以下问题:
对于N个两两互质的整数,求最小公解X,X满足X mod N1 = A1, X mod N2 = A2……X mod Nn = An
我国有一本数学古书「孙子算经」有这样一道问题:「今有物,不知其数,三三数之,剩二;五五数之,剩三;七七数之,剩二。问物几何?」
意思是一个整数除以三余二,除以五余三,除以七余二,求这个整数(满足条件且最小)
做法是:
n%3=2,n%5=3,n%7=2且3,5,7互质
找到使(5×7)的倍数模3得1的数,答案是70
找到使(3×7)的倍数模5得1的数,答案是21
找到使(3×5)的倍数模7得1的数,答案是15
那么
(70×2+21×3+15×2) % (3×5×7) = 23,23就是最终答案了
理解如下:
70×2 = 140,当中的2是指n%3 = 2的2,因为70%3=1,乘2后使其能满足%3=2的条件,同理,
21×3使其能满足%5=3
15×2使其能满足%7=2
又70能整除5和7,21能整除3和7,15能整除3和5
因此70×2+21×3+15×2 = 233能满足%3=2,%5=3,%7=2的条件
将233对3×5×7=105取模,是为了取得最小的情况,因为105是能够同时整除3,5,7的数,如果减去,对该数满足%3=2,%5=3,%7=2没有影响。因此对105取模,得到的结果便是最小并满足条件的数
同理,这一题的做法可以类比上面的方法
找到使(23×28)的公倍数模33得1的数,答案是1288
找到使(23×33)的公倍数模28得1的数,答案是14421
找到使(28×33)的公倍数模23得1的数,答案是5544
(5544×p+14421×e+1288×i) % (23×28×33) = ans + d