求解线性同余方程组
来源:互联网 发布:薛之谦主持的网络综艺 编辑:程序博客网 时间:2024/04/30 09:12
求解线性同余方程组是个很古老的问题,在中国古代就给出了一种特殊的线性同余方程组的解法,那就是可用中国剩余定理求解的线性方程组,这个方程组有个特点,就是任意两个方程(x=b(mod m))的m直接互质,下面说一下它的一个解法:
方程组:x=b1(mod m1);
x=b2(mod m2);
x=b3(mod m3);
......
x=bn(mod mn);
特点:其中mi与mj互质(i!=j);mi>0,(0<i<=n);这里的所有的参数均为非负整数
求解:令M0=m1*m2*....mn;
Mi=M0/mi,(0 <i<=n);
Ci为方程Mi*x=1(mod mi)的一个特解,这个可以由扩展欧几里得直接解出来,(0<i<=n);
解为:x=b1*c1*M1+b2*c2*M2+.....+bn*cn*Mn(mod M0);
这里就不给出证明了,证明可以用解空间的关系来证,只需说明解出的这个作为解的方程与上述的所有条件方程的解相互包含即可,下面介绍一般的同余方程到 解法,也就是合共同余方程的方法:
对于普通的两个同余方程:
x=b1(mod m1);
x=b2(mod m2);
求解:约定gcd(m1,m2)表示m1和m2的最大公约数,lcm(m1,m2)表示它们的最小公倍数,那么就有:
m1*m2=gcd(m1,m2)*lcm(m1,m2) ;
上述的两个方程可以化为:
x+k1*m1=b1;
x-k2*m2=b2;
两式相减:
k1*m1+k2*m2=b1-b2;
所以两个方程有整数解的充要条件是:
gcd(m1,m2)|(b1-b2);(现不予以证明,"|"表示"可以整除")
假如有解:
k1*m1+k2*m2=b1-b2的通解k1为:
(k0为j1*m1+j2*m2=gcd(m1,m2)的j1的一个特解)
k1=(b1-b2)/gcd(m1,m2)*k0+t*m2/gcd(m1,m2)(t为任整数)
(不予以推导);
将k1的通解带回到:x+k1*m1=b1得到:
x=b1-m1*(b2-b1)/gcd(m1,m2)*k0+t*m1*m2/gcd(m1,m2)
x=b1-m1*(b2-b1)/gcd(m1,m2)*k0+t*lcm(m1,m2)
也就是:x=b1-m1*(b2-b1)/gcd(m1,m2)*k0(mod lcm(m1,m2));
这样就把两个可以合并的方程合并成了一个,运用此方法可以将多个方程最终合并成为一个, 也就是解出来了方程组
数论问题是个古老而又值得探索的问题,这些问题的研究是基础性的,是值得一代又一代的我们去不断的探索,希望上述的一个到处都有的解法能给读者一些东西
- 求解线性同余方程组
- 模线性同余方程组求解
- 求解一元线性同余方程组模版
- 同余方程组求解
- POJ 2891(线性同余方程组的求解)
- 扩展欧几里德求解线性同余方程组相关~
- 解线性同余方程组
- 解线性同余方程组
- 线性同余方程组模板
- 算法学习之模线性同余方程组(中国剩余定理+求解同余方程组) poj1006+hdu3579
- 一元线性同余方程&&一元线性同余方程组
- Hello Kiki hdu 3579 求解一元线性同余方程组ps:中国剩余定理
- HDU OJ 3579 Hello Kiki(线性同余方程组的合并求解)
- poj 2891 Strange Way to Express Integers(线性同余方程组求解)
- hdu 3579 Hello Kiki(求解线性同余模方程组的正整数解模板题)
- HDU1573 一元线性同余方程组
- 解一元线性同余方程组模板
- Hdu 1573 线性同余方程组
- 识别“百度权重”作弊的方法
- mysql启动问题access denied for user 'root'@'localhost'(using password:YES)
- ural Threeprime Numbers(dp)
- shell脚本不换行刷新数据
- js综合能力提升 继承prototype
- 求解线性同余方程组
- 数据库的分页查询
- 经典背包问题 01背包+完全背包+多重背包
- 排列组合算法
- 【WEB基础】②js控制表单提交
- 2014木瓜移动校园招聘笔试题之递归优化题解答
- 友元关系
- 递归打印
- 二哥让他