A*m+B*n=D问题的数学推导求解
来源:互联网 发布:centos 解压 iso文件 编辑:程序博客网 时间:2024/05/01 13:00
A*m+B*n=D问题的数学推导求解
流浪狗 2006.3
正整数m,n,求m与n的最大公约数问题是一个算法入门的题目。但是要求解两个整数A和B,使得A*m+B*n=D,D是m,n的最大公因数。求解最大公约数的问题可以表示如下:
1) 输入正整数m,n
2) 令r=m%n;
3) 判断r是否等于0,如果等于0,则结束
4) 令m=n; n=r;转到(2)
5) 输出n
而要求解A*m+B*n=D的问题,令
a'*m+b'*n=c,
a*m+b*n=d
在程序运行过程中始终成立,则
1) 输入m,n
2) 令a'=b=1,a=b'=0,c=m,d=n;
3) 令q=c/d;r=c%d;
4) 判断r是否等于0,如果等于0,则结束
5) 交换值,怎样交换?转向(3)
具体怎样交换呢?我们可以通过数学推倒来确定。
已知条件为
ck+1=dk,
dk+1=rk,
rk+1=ck+1%dk+1
因为
a’k*m+b’k*n=ck,
ak*m+bk*n=dk
所以
a’k+1*m+b’k+1*n=ck+1=dk= ak*m+bk*n
由于a’k+1,b’k+1,ak,bk都是整数,故有
a’k+1=ak; b’k+1=bk; ……………………………………….(1)
又
ak+1*m+bk+1*n=dk+1=rk= ck% dk= ck-q* dk
→ak+1*m+bk+1*n=a’k*m+b’k*n-q*( ak*m+bk*n)
→ak+1*m+bk+1*n=( a’k-q* ak)*m+( b’k-q* bk)
故有
ak+1= a’k-q* ak; bk+1= b’k-q* bk………………………..(2)
由(1)(2)可以得出第5步的具体算法:
c=d; d=r;
t=a’;
a’=a;
a=t-q*a;
t=b’;
b’=b;
b=t-q*b;
- A*m+B*n=D问题的数学推导求解
- 求解a^b % m
- 求解x=a^b(mod m)
- 求解x=a^b(mod m)
- 处理 a/b (mod m) 且 b | a 的求解
- 求解x=a^b(mod m)的几种方法
- 2} 求从m到n的映射的个数 0 c} n{-2 b 设m={a
- N o v e m b e r 5 t h M o n d a y
- N o v e m b e r 1 2 t h M o n d a y
- N o v e m b e r 1 9 t h M o n d a y
- N o v e m b e r 2 6 t h M o n d a y
- n个a和m个b的排列
- SPOJ4491. Primes in GCD Table(gcd(a,b)=d素数,(1<=a<=n,1<=b<=m))加强版
- N o v e m b e r 7 t h W e d n e s d a y
- HDU3307A^B = C mod D,已知A,C,D,求解B
- 在由N个正整数的集合S中,找出最大元素M,满足M=A + B,其中A,B都是集合S中元素
- hdu 1093a+b问题5 n行数n在前.每行m个m在前 20140722.cpp
- if和if else的区别if(a>=b&&b>=c) printf("&d\n",a);
- Java中的类反射机制
- 多国语言
- Eclipse及其插件介绍和下载
- 数组保存到文件
- 用Javascript,xml parser控制xml文档的逐条显示
- A*m+B*n=D问题的数学推导求解
- JDK5新特性汇总(与1.4对照)
- 翻译的艺术-bind
- 小霸王其乐无穷
- JavaScript小技巧
- HL又要成校友了,真好~~~
- 正则表达式
- 新技术引发“数据爆炸” 企业背上沉重数据负担
- 感动,莫宁