中国古代求解一次同余式组(见同余)的方法。是数论中一个重要定理。又称中国剩余定理,孙子定理。
公元前后的《孙子算经》中有“物不知数”问题:“今有物不知其数,三三数之余二 ,五五数之余三 ,七七数之余二,问物几何?”答为“23”。也就是求同余式组x≡2 (mod3),x≡3 (mod5 ),x≡2 (mod7)(式中a≡b (modm)表示m整除a-b )的正整数解。明朝程大位用歌谣给出了该题的解法:“三人同行七十稀,五树梅花廿一枝,七子团圆月正半,除百零五便得知。”即解为x≡2×70+3×21+2×15≡233≡23(mod105)。
“已知m1、m2、m3是两两互质的正整数,求最小正整数x,使它被m1、m2、m3除所得余数分别为C1、C2、C3 .”
孙子定理的思想便是先分别找出被其中数mi除余1而被另二数整除的数Mi(i=1,2,3),则所求的数之一便是 C1M1+C2M2+C3M3;
若欲求的是最小的符合要求的数,则将上面的得数对m1*m2*m3求余即可
在古算题中,m1=3,m2=5,m3=7;C1=2,C2=3,C3=2;M1=70,M2=21,M3=15.
其中
M1=70=3×23+1=5×7×2;
M2=21=5×4+1=3×7×1;
M3=15=7×2+1=3×5×1;
而 C1M1+C2M2+C3M3=2×70+3×21+2×15=233
∵233>2×3×5×7=2×105,故所求最小数为 233-2×105=23
孙子定理可以推广到对任意n个数mi的情形,n≥2,n∈N,国外称此定理为“中国剩余定理”。
民间传说着一则故事——“韩信点兵”。
秦朝末年,楚汉相争。一次,韩信将1500名将士与楚王大将李锋交战。苦战一场,楚军不敌,败退回营,汉军也死伤四五百人,于是韩信整顿兵马也返回大本营。当行至一山坡,忽有后军来报,说有楚军骑兵追来。只见远方尘土飞扬,杀声震天。汉军本来已十分疲惫,这时队伍大哗。韩信兵马到坡顶,见来敌不足五百骑,便急速点兵迎敌。他命令士兵3人一排,结果多出2名;接着命令士兵5人一排,结果多出3名;他又命令士兵7人一排,结果又多出2名。韩信马上向将士们宣布:我军有1073名勇士,敌人不足五百,我们居高临下,以众击寡,一定能打败敌人。汉军本来就信服自己的统帅,这一来更相信韩信是“神仙下凡”、“神机妙算”。于是士气大振。一时间旌旗摇动,鼓声喧天,汉军步步进逼,楚军乱作一团。交战不久,楚军大败而逃。
中国剩余定理的应用:POJ 1006题:
Description
Input
Output
使23×33被28除余1,用23×33×19=14421;
使23×28被33除余1,用23×28×2=1288。
n=(5544×p+14421×e+1288×i-d)%(23×28×33)