码迷,mamicode.com
首页 > 编程语言 > 详细

Gcd&Exgcd算法

时间:2018-01-28 21:59:13      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:ros   blog   image   soft   欧几里德   body   辗转相除法   style   com   

Preface

  对于许多数论问题,都需要涉及到Gcd,求解Gcd,常常使用欧几里得算法。

  对于许多求解问题,可以列出贝祖方程:ax+by=Gcd(a,b),用Exgcd解之即可到答案,Exgcd即扩展欧几里得算法。

  这里是对于两个算法的学习小记

Content

欧几里得算法

  由百度百科得

欧几里德算法又称辗转相除法,用于计算两个正整数a,b的最大公约数。

从整数的除法可知:对任给二整数a,b0,必有二整数q及r存在,使得a=qb+r,0≤rb,并且q及r是唯一存在的,这是数论的一条基本定理,整数的一系列重要性质都可以由此得到,如果反复利用这一基本定理,就可以得到因为每进行一次除法,余数就至少减一,而b是有限的正整数,所以最多进行b次,总可以得到一个余数是零的等式,即rn+1=0。

  当然,百度说的这种话我都是看不懂的。

  其实辗转相除法就是运用了Gcd(a,b)=Gcd(b,a mod b),直到a≡0(mod b),b即为所求。

  这个方法的目的是为了达到可以将求解的两个数不断缩小,使得效率为对数级别。

  那么,我们如何求证这个式子的正确性呢?

  我们令

技术分享图片

  根据模运算的定义,可以有

 

  

 

  

 

Gcd&Exgcd算法

标签:ros   blog   image   soft   欧几里德   body   辗转相除法   style   com   

原文地址:https://www.cnblogs.com/2016fyj/p/8372303.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!