关于中国剩余定理{附【转】中国剩余定理 }

中国剩余定理:定义为求解有 k 对关系:P % ai = bi,其中 ai 两两之间互质的 P 的最小正整数。

解法:1. 无论 ai 之间是否互质,这个方法都是通用的:将两两之间不互质就是把原来的关系式化为:P = bi (mod ai) →  ai * x + bi = P,用拓展欧几里德求解同余方程组了。具体解释请见——【poj 2891】Strange Way to Express Integers(数论--拓展欧几里德 求解同余方程组 模版题)

         2.对于专门的中国剩余定理,由于 ai 两两互质,可知道 a2*a3*...*ak = 1 (mod a1)  和  a1*a3*...*ak = 1 (mod a2) 等关系。那么想使 P % ai = bi ,就是要式子两边同乘 bi 了。使得左式子乘 bi 后的和就是保证了题中关系的一个正整数,再通过模 lcm(a1*a2*...*ak),也就是 a1*a2*...*ak 来调整就行。(像第1个方法的最后一步一样)


下面是转载的了~ 原博:http://blog.csdn.net/shanshanpt/article/details/8724769

      《孙子算经》中有“物不知数”问题:“今有物不知其数,三三数之余二 ,五五数之余三 ,七七数之余二,问物几何?”答为“23”。

 --------这个就是传说中的“中国剩余定理”。 其实题目的意思就是,n % 3 = 2, n % 5 = 3, n % 7 = 2; 问n是多少?

那么他是怎么解决的呢?

看下面:

题目中涉及 3, 5,7三个互质的数、

令:5 * 7 * a % 3 = 1;  --------------> a = 2; 即5 * 7 * 2 = 70;

       3 * 7 * b % 5 = 1;  --------------> b = 1; 即3 * 7 * 1 = 21;

       3 * 5 * c % 7 = 1;  --------------> c  = 1; 即3 * 5 * 1 = 15;

为什么要使余数为1:是为了要求余数2的话,只要乘以2就可以,要求余数为3的话,只要乘以3就可以!

( 因为题目想要n % 3 =2, n % 5 =3, n % 7 =2; )

      那么:要使得n % 3 = 2,那么( 5 * 7 * 2 )*2  % 3 = 2;( 因为5 * 7 * 2 % 3 = 1 )

      同理: 要使得n % 5 = 3,那么( 3 * 7 * 1 )*3  % 5 = 3;( 因为3 * 7 * 1 % 5 = 1 )

      同理:要使得n % 7 = 2,那么( 3 * 5 * 1 )* 2  % 7 = 2;( 因为3 * 5 * 1 % 7 = 1 )

那么现在将( 5 * 7 * 2 )* 2和( 3 * 7 * 1 )* 3和( 3 * 5 * 1 )* 2相加会怎么样呢?我们知道

   ( 5 * 7 * 2 )* 2可以被5和7整除,但是%3等于2

   ( 3 * 7 * 1 )* 3可以被3和7整除,但是%5等于3

   ( 3 * 5 * 1 )* 2可以被3和5整除,但是%7等于2

那么即使相加后,%3, 5, 7的情况也还是一样的!

      那么就得到一个我们暂时需要的数( 5 * 7 * 2 )* 2 +( 3 * 7 * 1 )* 3 +( 3 * 5 * 1 )* 2 = 233

但不是最小的!所有我们还要 233 % ( 3 * 5 * 7 ) == 23  得解!

原文地址:https://www.cnblogs.com/konjak/p/6067531.html