1、模线性方程 模线性方程组,henu 08wangnan,今天要解决的问题:,axb (mod n) a0 n0 x=? 如:4x2(mod 5),xa1 (mod n1)xa2 (mod n2)a0 n0 x=?,如:x2(mod 5) x3(mod 13),求解模线性方程?,axb (mod n) a0 n0 x=? 如:4x2(mod 5),1.是否有解? 2.有几个解? 3.这些解分别是多少?,?,分析,首先明确一点, 如果x是解(0=xn), 则对于任意整数k, x+kn也是解, 所以解应表示成一些剩余类xxi axb(mod n)等价于存在整数y, 使得 ax-ny=b 这是一个线性
2、同余方程, 首先判断d=(a,n)是不是b的约数, 如果是, 等价于方程ax-ny=b, 相当于求解 axb(mod n), (a,n)=1,分析,这个方程有两种解法 直接解ax-ny=d, 再两边同时乘以b/d. 注意这只是一个解, 一共应该有d个, 间隔为n/d(因为对于模n/d来说解是唯一的) 在模n的缩系中a是存在逆a-1的. 因此解为xa-1b(mod n), 同样扩展得d个解. 在缩系中求逆也有两种方法 求ax-ny=1的解, 和方法一等价 利用欧拉定理a-1a(n)-1(mod n),求解模线性方程,axb(mod n) 方法一:利用Euler函数 a*a(n)-1 1 a(b*
3、a(n)-1) b 关键: 求abmod n a, a2, a4, a8, a16, 同余方程可以做乘法,b做二进制展开选择 方法二:扩展的Euclid算法 存在整数y,使得ax-ny=b 记d=(a,n),a=a/d, n=n/d,必须有d|b ax-ny=1*(b/d) 注意:x不唯一, 所有x相差n/d的整数倍,欧拉定理与费马定理,欧拉函数: 1n中和n互素的元素个数(n) Euler定理 若gcd(a, n)=1则a(n) 1 (mod n) 意义:当b很大时ab ab mod (n)(mod n),让指数一直比较小 欧拉函数是积性函数,即当(m,n)=1时f(mn)=f(m)*f(n
4、) 费马定理是欧拉定理在n为素数时的特殊情况:ap-1 1 (mod p) 其中p为素数,MODULAR-LINEAR-EQUATION-SOLVER(a, b, n),MODULAR-LINEAR-EQUATION-SOLVER(a, b, n) 1 (d, x, y) EXTENDED-EUCLID(a, n) 2 if d | b 3 then x0 x(b/d) mod n 4 for i 0 to d - 1 5 do print (x0 + i(n/d) mod n 6 else print “no solutions“,MODULAR-LINEAR-EQUATION-SOLVER
5、(a, b, n),MODULAR-LINEAR-EQUATION-SOLVER(4, 2, 5) 1 (1, 4, -3) EXTENDED-EUCLID(4 , 5 ) 2 if 1 | 2 3 then 3 4 (2/1) mod 5 4 for i 0 to 1- 1 5 do print (3 + i (5/1) mod 5 6 else print “no solutions“,4x2(mod 5),4x2(mod 5) x有唯一解,x=3,MODULAR-LINEAR-EQUATION-SOLVER(a, b, n),MODULAR-LINEAR-EQUATION-SOLVER(
6、14, 30, 100) 1 (2, -7, 1) EXTENDED-EUCLID(14, 100 ) 2 if 2 | 30 3 then 95 (-7) * (30/2 ) mod 100 4 for i 0 to 2 - 1 5 do print (95 + i (100/2) mod 100 6 else print “no solutions“,14x30 (mod 100),14x30(mod 100) x有两个解,x=95 ,x=45,练习: Poj 1061 青蛙的约会,接下来要解决的问题:,xa1 (mod n1)xa2 (mod n2)a0 n0 x=?,如:x2(mod
7、5) x3(mod 13),韩信点兵!,在中国数学史上,广泛流传着一个“韩信点兵”的故事: 韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝的建立了卓绝的功劳。据说韩信的数学水平也非常高超,他在点兵的时候,为了保住军事机密,不让 敌人知道自己部队的实力,先令士兵从1至3报数,然后记下最后一个士兵所报之数;再令士兵从至报数,也记下最后一个士兵所报之数;最后令士兵从1至7 报数,又记下最后一个士兵所报之数;这样,他很快就算出了自己部队士兵的总人数,而敌人则始终无法弄清他的部队究竟有多少名士兵。,韩信点兵!,在中国数学史上,广泛流传着一个“韩信点兵”的故事: 这个故事中所说的韩信点兵的计算方
8、法,就是现在被称为“中国剩余定理”的一次同余式解法。它是中国古代数学家的一项重大创造,在世界数学史上具有重要的地位。,孙子算经?解模线性方程组!,最早提出并记叙这个数学问题的,是南北朝时期的数学著作孙子算经中的“物不知数”题目。这道“物不知数”的题目是这样的: “今有一些物不知其数量。如果三个三个地去数它,则最后还剩二个;如果五个五个地去数它,则最后还剩三个;如果七个七个地去数它,则最后也剩二个。问:这些物一共有多少?” 用简练的数学语言来表述就是:求这样一个数,使它被除余,被除余,被除余。,x 2(mod 3) x 3(mod 5) x 2(mod 7) X=?,中国剩余定理,考虑方程组xa
9、i(mod mi), mi两两互素 在0i时ei0(mod mj) 则e1a1+e2a2+ekak就是一个解, 调整得到0,m)内的唯一解(想一想,如何调整),整理一下,一般线性方程组aixibi(mod ni) axb(mod n) xb1(mod n1) xb1(mod n1) xb1(mod p1,i) 用中国剩余定理 其他规则同余方程 二项方程: 借助离散对数(本身?) 高次方程: 分解n, 降幂 单个多变元线性方程: 消法,求解模线性方程组步骤:,找到模线性方程组中每个方程的ai ,ni 求出相对应的 mi , mi-1 求出相应的 ci =mi (mi-1 mod ni ) 最后一步:a (a1c1+a2c2+akck) (mod n),x 2(mod 3) x 3(mod 5) x 2(mod 7) x=?,a1=2 n1=3 a2=3 n2=5 a3=2 n3=7n=n1*n2*n3=105m1=35 m1-1=2 m2=21 m2-1=1 m3=15 m3-2=1a=23+k*n(k=0,1,2),练习: Poj 1006,