欧几里得算法,扩展欧几里得算法及裴蜀定理证明
2016-12-14 20:40
260 查看
最近小腐了一下数论,巩固了一些NOIP考察的数论基本知识。
在交流中我猛然意识到,很多证明虽然我看过、理解过,但是到自己讲的时候就词穷了,于是我旷了晚修来上网找证明,要么高深莫测看不懂,要么跳步百出脑补晕,很难找到适合我这种初中生(蒟蒻)的浅显易懂的证明,我把好几种学过的知识联系起来,才算懂了个大概。
在这里总结一下,也是方便那些像我一样的蒟蒻学习。
a mod b 表示a 除以 b 所得的余数。
我们设a>=b, 那么算法就是 gcd(a,b)=gcd(b,a mod b)
当b=0时,gcd(a,b)=a。
为了方便,a,b全部满足a,b>=0。
如果你学信息学,这是入门级的题,你只需要打一个不超过三行的递归,即可得解。
设a,b有公约数r。
a=uk,b=vk。
a mod b
=a-(a div b)*b (a div b 指a除以b所得到的商)
=uk-(u/v)vk
=(u-(u/v)v)k
∵u>=v
∴u-(u/v)v>=0
显然a mod b有因子r。
当a=b时,a mod b=0,这个我们就特别讨论了,按照定义gcd(a,0)=a。
故当a=b时,gcd(a,b)=gcd(b,a mod b)也成立。
综上所述,*a和b的公因数一定是b和a mod b的公因数。
那么反过来是否也成立呢?
(2)
我们设b 和 a mod b 有公因子r
b=ur, a mod b=vr。
设 a=kb+a mod b
这里的k=a div b,它是整数,但是没有确定的值。
a=kb+a mod b
=kur+vr
=(ku+v)r
我们发现还是可以提一个公因式r出来。
*b和a mod b的的公因数也一定是a和b公因数。
把两个结论串起来也就是,a和b的公因数与b和a mod b的公因数完全一样。
它们你中有我,我中有你。
那么gcd(最大公因数)自然也相等。
至此证毕。
裴蜀定理是扩展欧几里得算法的基础,它的证明是一个迭代过程,和扩展欧几里得算法的求解过程类似。
这里在网上看到一篇比较好的,借用一下:http://blog.sina.com.cn/s/blog_9adbe8020100zc0j.html
如果不是这个形式,如ax+by=gcd(x,y) ,先化简,求出解后乘上gcd(x,y)
根据裴蜀定理,我们知道这个方程一定有解。
ax+by=1
bx’+(a mod b) y’=1
(a mod b)x”+(b mod (a mod b))y”=1
…
如此迭代,直到 ax+ by=1 这条方程a=1,b=0,
那么此时可以得出一解x=1,y=0。
ax+by=1
bx’+(a mod b) y’=1
我们如何利用x’和y’的值来求出x和y的值呢?
ax+by=bx’+(a- a div b)y’
ax+by=ay’+bx’-(a div b)by’
ax+by=ay’+b(x’-(a div b) y’)
我们扔掉什么狗屁恒等定理,直接提个公因式,使对应的相等就行了。
即x=y’ , y=x’-(a div b) y’。
公式可以不用死背,比赛时像我这样推推就行了。
到这里三个恶心的东西就结束了,我相信很少题是裸的,都需要自己观察,如果有一些好题,我会在博客上分享。
如果读者遇到了一些好题,也可以留言,一起分享。
其实是这样的:
我拿着“当Gcd(p,q)=1时,最大无法表示成px+qy(x,y>=0)的数是pq-p-q”的问题去问教我们“培优班”“兴趣班”的高中数学老师,过了两周,她给我卖关子,写了下裴蜀定理,说:“这是大一的内容,你弄不懂,因为很复杂,许多知识没学过。”,我告诉她我证明过,但是裴蜀定理ax+by中的a,b只满足整数,不一定满足a,b>=0,她一脸懵逼,显然是没有注意到”(x,y>=0)”,接着我就开始和一位数学专业的瞎扯信息学。截至本博客发表前,未有答复。在交流中我猛然意识到,很多证明虽然我看过、理解过,但是到自己讲的时候就词穷了,于是我旷了晚修来上网找证明,要么高深莫测看不懂,要么跳步百出脑补晕,很难找到适合我这种初中生(蒟蒻)的浅显易懂的证明,我把好几种学过的知识联系起来,才算懂了个大概。
在这里总结一下,也是方便那些像我一样的蒟蒻学习。
欧几里得算法:
gcd(a,b)表示a,b的最大公约数。a mod b 表示a 除以 b 所得的余数。
我们设a>=b, 那么算法就是 gcd(a,b)=gcd(b,a mod b)
当b=0时,gcd(a,b)=a。
为了方便,a,b全部满足a,b>=0。
如果你学信息学,这是入门级的题,你只需要打一个不超过三行的递归,即可得解。
Prove:
(1)设a,b有公约数r。
a=uk,b=vk。
a mod b
=a-(a div b)*b (a div b 指a除以b所得到的商)
=uk-(u/v)vk
=(u-(u/v)v)k
∵u>=v
∴u-(u/v)v>=0
显然a mod b有因子r。
当a=b时,a mod b=0,这个我们就特别讨论了,按照定义gcd(a,0)=a。
故当a=b时,gcd(a,b)=gcd(b,a mod b)也成立。
综上所述,*a和b的公因数一定是b和a mod b的公因数。
那么反过来是否也成立呢?
(2)
我们设b 和 a mod b 有公因子r
b=ur, a mod b=vr。
设 a=kb+a mod b
这里的k=a div b,它是整数,但是没有确定的值。
a=kb+a mod b
=kur+vr
=(ku+v)r
我们发现还是可以提一个公因式r出来。
*b和a mod b的的公因数也一定是a和b公因数。
把两个结论串起来也就是,a和b的公因数与b和a mod b的公因数完全一样。
它们你中有我,我中有你。
那么gcd(最大公因数)自然也相等。
至此证毕。
裴蜀定理:
定理:ax+by=gcd(x,y)的关于a,b的二元二次方程一定有无穷组正整数解。裴蜀定理是扩展欧几里得算法的基础,它的证明是一个迭代过程,和扩展欧几里得算法的求解过程类似。
这里在网上看到一篇比较好的,借用一下:http://blog.sina.com.cn/s/blog_9adbe8020100zc0j.html
在数论中,裴蜀定理是一个关于最大公约数(或最大公约式)的定理。裴蜀定理得名于法国数学家艾蒂安·裴蜀,说明了对任何整数a、b和它们的最大公约数d,关于未知数x和y的线性丢番图方程(称为裴蜀等式): ax + by = m 有解当且仅当m是d的倍数。裴蜀等式有解时必然有无穷多个整数解,每组解x、y都称为裴蜀数,可用辗转相除法求得。 例如,12和42的最大公因子是6,则方程12x + 42y = 6有解。事实上有(-3)×12 + 1×42 = 6及4×12 + (-1)×42 = 6。 特别来说,方程 ax + by = 1 有解当且仅当整数a和b互素。 裴蜀等式也可以用来给最大公约数定义:d其实就是最小的可以写成ax + by形式的正整数。这个定义的本质是整环中“理想”的概念。因此对于多项式整环也有相应的裴蜀定理。 证明: (1)若b=0,则(a,b)=a.这时定理显然成立。 (2)若a,b不等于0. ∵(a,b)=(a,-b)∴不妨设a,b都大于零,a>=b,(a,b)=d 对ax+by=d,两边同时除以d,可得(a1)x+(b1)y=1,其中(a1,b1)=1。 转证(a1)x+(b1)y=1。由带余除法: a1=(q1)b+(r1),其中0<=r1 < b1 b1=(q2)(r1)+(r2),其中0=< r2 < r1 (r1)=(q3)(r2)+(r3),其中0=< r3 < r2 ..... (rn-3)=(qn-1)(rn-2)+(rn-1) (rn-2)=(qn)(rn-1)+(rn) (rn-1)=(qn+1)(rn) 于是,有(a1,b1)=(b1,r1)=(r1,r2)=...=(rn-1,rn)=1 故 (rn-2)=(xn)(rn-1)+1 即1=(rn-2)-(xn)(rn-1) 由倒数第三个式子(rn-1)=(rn-3)-(xn-1)(rn-2)代入上式,得 1=[1+(xn)(xn-1)](rn-2)-(xn)(rn-3) 然后用同样的办法用它上面的等式逐个地消去(rn-2),...(r1), 可证得1=(a1)x+(b1)y。 推广: 以上定理可推广到n个,n≥2 如1st IMO 1959第1题:证明对任意自然数n,(21n+4)/(14n+3)为既约分数。证明:很容易看出3(14n+3)-2(21n+4)=1,由裴蜀定理,21n+4与14n+3互质,故(21n+4)/(14n+3)为既约分数。Q.E.D. 另如:5x+4y+3z可表示全部整数.因为3,4,5互质,所以5x+4y+3z可以等于1,则必定可以等于其他任意整数
扩展欧几里得算法:
算法:求方程ax+by=1(gcd(x,y)=1)的整数解。如果不是这个形式,如ax+by=gcd(x,y) ,先化简,求出解后乘上gcd(x,y)
根据裴蜀定理,我们知道这个方程一定有解。
ax+by=1
bx’+(a mod b) y’=1
(a mod b)x”+(b mod (a mod b))y”=1
…
如此迭代,直到 ax+ by=1 这条方程a=1,b=0,
那么此时可以得出一解x=1,y=0。
ax+by=1
bx’+(a mod b) y’=1
我们如何利用x’和y’的值来求出x和y的值呢?
ax+by=bx’+(a- a div b)y’
ax+by=ay’+bx’-(a div b)by’
ax+by=ay’+b(x’-(a div b) y’)
我们扔掉什么狗屁恒等定理,直接提个公因式,使对应的相等就行了。
即x=y’ , y=x’-(a div b) y’。
公式可以不用死背,比赛时像我这样推推就行了。
到这里三个恶心的东西就结束了,我相信很少题是裸的,都需要自己观察,如果有一些好题,我会在博客上分享。
如果读者遇到了一些好题,也可以留言,一起分享。
相关文章推荐
- 欧几里得算法与扩展欧几里得算法总结
- 理论: 数论(2):拓展欧几里得算法及其证明
- 欧几里得算法和扩展欧几里得算法
- 欧几里得算法与扩展欧几里得算法与逆元
- 欧几里得算法和扩展欧几里得算法
- 欧几里得算法和扩展欧几里得算法
- 证明:欧几里得算法
- 关于裴蜀定理的一些证明
- 关于欧几里得算法和拓展欧几里德定理的证明(不定方程求解方法)
- 欧几里得算法实现、正确性证明及时间复杂度分析
- 欧几里得算法与扩展欧几里得算法_C++
- 欧几里得算法和扩展欧几里得算法
- 欧几里得算法(辗转相除)及其扩展证明
- 欧几里得算法和扩展欧几里得算法
- HHU暑期第一弹——小小小数论(欧拉函数+埃式筛法+分解质因数+欧几里得算法+扩展欧几里得算法和模线性方程)
- 欧几里得算法的推导与证明 || 扩展欧几里德算法的解释说明
- 欧几里得算法和扩展欧几里得算法
- 欧几里得算法的证明
- 欧几里得算法及扩展欧几里得算法简单解释
- 欧几里得算法/扩展欧几里得算法