同余方程组有解的条件

来源:互联网 发布:渥太华大学 知乎 编辑:程序博客网 时间:2024/04/29 22:35
记号与约定:
 gcd(a, b):a与b的最大公约数
 lcm(a, b):a与b的最小公倍数
 x == a (mod m):x与a关于模m同余

 x == a1 (mod m1), x == a2 (mod m2)
 有解的充要条件是 gcd(m1, m2) | (a1 - a2),并且:
  设其中一个特解为x0,则通解为 x = x0 + k * lcm(m1, m2) (k为整数)

-----------------------------------------------------------------------------------------------------------------

命题:用F[i]表示方程 x == a[i] (mod m[i]), 则方程组 F[1..n]有解的充要条件为对所有1 <= i < j <= n,
   方程组(F[i], F[j]) 有解。

证明:
当n=3时,
 设F[1]与F[2]的特解为x0, 则F[1]与F[2]的通解为:
  x = x0 + k * lcm(m[1], m[2]),
 带入F[3],有
  x0 - a[3] == -k * lcm(m[1], m[2]) (mod m[3])
 于是原命题等价转化为:

 已知:
  gcd(m[i], m[j]) | (a[i] - a[j]) (1 <= i < j <= 3)
  m[1] | (x0 - a1)
  m[2] | (x0 - a2)
 求证:
  gcd(lcm(m[1], m[2]), m[3]) | (x0 - a3)
 证明:
  利用质因数分解,并根据max(min(a, b), c) = min(max(a, c), max(b, c)),立即得
   gcd(lcm(a, b), c) = lcm(gcd(a, c), gcd(b, c))
  于是求证部分化为:
   lcm(gcd(m[1], m[3]), gcd(m[2], m[3])) | (x0 - a3)
  ∵ m[1] | (x0 - a[1])
  ∴ gcd(m[1], m[3]) | (x0 - a[1]),
   又 gcd(m[1], m[3]) | (a[1] - a[3])
  于是
   gcd(m[1], m[3]) | (x0 - a[3])
  同理,
   gcd(m[2], m[3]) | (x0 - a[3])
  由以上两式可知
   lcm(gcd(m[1], m[3]), gcd(m[2], m[3])) | (x0 - a[3])
  证毕

当n >= 4时,
 将F[1]与F[2]求解后合并为G: x == b (mod n)
 则对于 i >= 3,由于F[1], F[2], F[i]两两有解,得G, F[i]亦有解。
 由此可归化为n - 1的情况,其中n - 1个方程为G, F[3], F[4], ..., F[n],
 且满足两两有解。