32
从上面的结论,解决问题“对于给定的模,求与给定剩余所同余的数的方法” 是很容易的,在下面的讨论中也会很有用。指定模A ,B ,我们求数z ,对于模A ,B 分别与数a ,b 同余。所有z 的值都形如Ax +a ,x 是未知数,而且要满足Ax +a ≡b (mod B )。现在如果数A ,B 的最大公约数是δ ,同余方程的完整解的形式为x ≡v (mod B /δ )或者用等价的等式表达,x =v +kB /δ ,k 为任意整数。因此,公式Av +a +kAB /δ 包括了z 的所有值,即z ≡Av +a (mod AB /δ )是这个问题的完整解。如果我们在模A ,B 的基础上再加一个模C ,并且对于模C ,z ≡c ,我们可以按照同样的方式开展,因为先前两个条件已经合并为一个。因此,如果AB /δ 和C 的最大公约数为e ,并且假设同余方程(AB /δ )x +Av +a ≡c (mod C )的解为x ≡w (mod C /e ),那么问题的解完全可以通过同余方程z ≡ABw /δ +Av +a (mod ABC /δe )解得。我们观察到AB /δ 是A 和B 的最小公倍数,ABC /δ 是数A ,B 和C 的最小公倍数,那么容易推出不论有多少个模A ,B ,C ,…,如果它们的最小公倍数是M ,全部的解都可以用z ≡r (mod M )来表示。但是当并非所有的辅助同余方程都可解时,我们断定这个问题存在不可解的情况。但是显然,当所有的数A ,B ,C ,…互质时,这种情况是不可能发生的。
例如,令数A ,B ,C ,a ,b ,c 分别为504,35,16,17,-4,33。这里的两个条件z ≡17(mod 504)和z ≡-4(mod 35)等价于一个条件z ≡521(mod 2520),加上条件z ≡33(mod 16),我们最终得到z ≡3041(mod 5040)。
33
当所有数A ,B ,C ,…都互质,可知它们的乘积是它们的最小公倍数。在这种情况下,多个同余式z ≡a (mod A ),z ≡b (mod B ),z ≡c (mod C )…合起来就与单个同余式z ≡r (mod R )等价,式中R 是数A ,B ,C ,…的乘积。反过来,单个条件z ≡r (mod R )也可以分解为多个条件,即如果R 以任意方式分解为互质的因数A ,B ,C ,…,那么条件z ≡a (mod A ),z ≡b (mod B ),z ≡c (mod C ),…就把原始条件全部涵盖。这条结论不仅提供了一个发现方程无解的快捷的方法,也是一种令人满意的、优雅的运算方式。
34
如上,令z ≡a (mod A ),z ≡b (mod B ),z ≡c (mod C )。将所有模都分解为互质的因数:A 分解为A ′A ″A ,…;B 分解为B ′B ″B ,…;使得数A ′,A ″,…,B ′,B ″,…要么都是质数,要么都是质数幂。如果数A ,B ,C ,…中的任何一个数已经是质数或质数幂,则不用分解。可知,上述条件可以用下面的条件来代替:z ≡a (mod A ′),z ≡a (mod A ″),z ≡a (mod A ),…;z ≡b (mod B ′),z ≡b (mod B ″),…;…。现在如果不是所有的数A ,B ,C ,…都互质(例如A 和B 非互质) ,显然A ,B 的所有质除数并非都各不相同。在因数A ,A ″,A ,…中必定有一个因数在B ′,B ″,B ,…能够找到等于它,或是它的倍数,或是它的除数的因数。假设第一个可能性是A ′=B ′。那么条件z ≡a (mod A ′)和条件z ≡b (mod B ′)必定相同,即a ≡b (mod A ′或B ′) ,因此其中一个可以忽略。但是如果z ≡a (mod A ′)不成立,这个问题就无解。其次,假设B ′是A ′倍数,那么条件z ≡a (mod A ′)就一定包含在条件z ≡b (mod B ′)中,即从后者推出的z ≡b (mod A ′)必须与前者相同。由此可以推出条件z ≡a (mod A ′)可以忽略,除非它与其他条件矛盾(如果这样问题便无解) 。当所有多余的条件都忽略以后,因数A ′,A ″,A ,…;B ′,B ″,B ,…;…中剩下的模就都是互质的。然后我们就能确定问题是否可解,并按照上文描述的方法求解。
35
例如,如果按照上文 (参考条目32) ,z ≡17(mod 504),z ≡-4(mod 35)和z ≡33(mod 16),那么这些条件可以分解为下面的条件:z ≡17(mod 8),z ≡17(mod 9),z ≡17(mod 7),z ≡-4(mod 5),z ≡-4(mod 7),z ≡33(mod 16)。在这些条件中,z ≡17(mod 8)和z ≡17(mod 7)可以忽略,因为前者已经包含在条件z ≡33(mod 16)中,后者同于条件z ≡-4(mod 7)。还剩条件
并且从这些条件我们有z ≡3041(mod 5040)。显然,通常这样做会比较方便:把从同一个条件推导出的剩下的条件分别重新组合:例如,当条件z ≡a (mod A ′),z ≡a (mod A ″),…中的一些被去掉之后,剩下的全部条件可以用z ≡a 取代,它的模是A ′,A ″,A ,…中所有剩下的模的乘积。因此,在我们的例子中,条件z ≡-4(mod 5),z ≡-4(mod 7)都被条件z ≡-4(mod 35)所取代。进一步可知,就简化计算来说,去掉多余的条件并不是无关紧要的。但是,讨论这些内容或其他具体的技巧并不是我们的目的,这些方法的学习通过自己实践比听他人讲述更加容易。
36
当所有的模A ,B ,C ,D ,…都彼此互质,通常采用下面的方法更好。确定一个数α ,它对于模A 同余于1,而对于剩余所有模的乘积同余为0,即α 是BCD …乘以表达式1/BCD …(mod A )的一个值(优先选取最小值) (参考条目32) 。类似地,令β ≡1(mod B )及β ≡0(mod ACD …),γ ≡1(mod C )及γ ≡0(mod ABD …),…。因此,如果我们求z 使得它对于模A ,B ,C ,D ,…分别同余于a ,b ,c ,d ,…,我们可以取
z ≡αa +βbγc +δd +…(mod ABCD …)
因为,显然αa ≡a (mod A )且剩下所有的数βb ,γc ,δd ,…都对于模A 同余为0,所以z ≡a (mod A )。对于其他的模可以做类似证明。当我们解几个同样类型的问题,它们中的所有的模A ,B ,C ,…的值保持不变,那么这种解法要优于前一种解法,因为α ,β ,γ ,…取同样的值。在年代学中有这样的问题:给定某年的小纪,黄金数以及太阳活动周,确定它的儒略年份。在这里可以取A =15,B =19,C =28;因为表达式1/(19×28)(mod 15)或1/532(mod 15)的值是13,所以α =6916,按照同样的方法可得β =4200和γ =4845。因此,我们要求的数是6916a +4200b +4845c 的最小剩余,其中a 是小纪,b 是黄金数,c 是太阳活动周。