族谱网 头条 人物百科

扩展欧几里得算法

2017-10-16
出处:族谱网
作者:阿族小谱
浏览:393
转发:0
评论:0
例子用类似辗转相除法,求二元一次不定方程47x+30y=1{textstyle47x+30y=1}的整数解。47=30*1+1730=17*1+1317=13*1+413=4*3+1然后把它们改写成

例子

用类似辗转相除法,求二元一次不定方程 47 x + 30 y = 1 {\textstyle 47x+30y=1} 的整数解。

47 = 30 * 1 + 17

30 = 17 * 1 + 13

17 = 13 * 1 + 4

13 = 4 * 3 + 1

然后把它们改写成“余数等于”的形式

17 = 47 * 1 + 30 * (-1) //式1

13 = 30 * 1 + 17 * (-1) //式2

4 = 17 * 1 + 13 * (-1) //式3

1 = 13 * 1 + 4 * (-3)

然后把它们“倒回去”

1 = 13 * 1 + 4 * (-3)

1 = 13 * 1 + [17 * 1 + 13 * (-1)] * (-3) //应用式3

1 = 17 * (-3) + 13 * 4

1 = 17 * (-3) + [30 * 1 + 17 * (-1)] * 4 //应用式2

1 = 30 * 4 + 17 * (-7)

1 = 30 * 4 + [47 * 1 + 30 * (-1)] * (-7) //应用式1

1 = 47 * (-7) + 30 * 11

得解x=-7, y=11。

这个过程可以用矩阵表示(其中q表示商,r表示余数)

( a b ) = ∏ ∏ --> i = 0 N ( q i 1 1 0 ) ( r N − − --> 1 0 ) {\displaystyle {\begin{pmatrix}a\\b\end{pmatrix}}=\prod _{i=0}^{N}{\begin{pmatrix}q_{i}&1\\1&0\end{pmatrix}}{\begin{pmatrix}r_{N-1}\\0\end{pmatrix}}}

( 47 30 ) = ( 1 1 1 0 ) ( 1 1 1 0 ) ( 1 1 1 0 ) ( 3 1 1 0 ) ( 4 1 1 0 ) ( 1 0 ) = ( 47 11 30 7 ) ( 1 0 ) {\displaystyle {\begin{pmatrix}47\\30\end{pmatrix}}={\begin{pmatrix}1&1\\1&0\end{pmatrix}}{\begin{pmatrix}1&1\\1&0\end{pmatrix}}{\begin{pmatrix}1&1\\1&0\end{pmatrix}}{\begin{pmatrix}3&1\\1&0\end{pmatrix}}{\begin{pmatrix}4&1\\1&0\end{pmatrix}}{\begin{pmatrix}1\\0\end{pmatrix}}={\begin{pmatrix}47&11\\30&7\end{pmatrix}}{\begin{pmatrix}1\\0\end{pmatrix}}}

( 1 0 ) = ( − − --> 7 11 30 − − --> 47 ) ( 47 30 ) {\displaystyle {\begin{pmatrix}1\\0\end{pmatrix}}={\begin{pmatrix}-7&11\\30&-47\end{pmatrix}}{\begin{pmatrix}47\\30\end{pmatrix}}}

或者用初等变换

( 47 30 1 0 0 1 ) → → --> ( 17 30 1 0 − − --> 1 1 ) → → --> ( 17 13 1 − − --> 1 − − --> 1 2 ) → → --> ( 4 13 2 − − --> 1 − − --> 3 2 ) → → --> ( 4 1 2 − − --> 7 − − --> 3 11 ) ⇒ ⇒ --> 1 = 47 ( − − --> 7 ) + 30 ( 11 ) {\displaystyle {\begin{pmatrix}47&30\\1&0\\0&1\end{pmatrix}}\rightarrow {\begin{pmatrix}17&30\\1&0\\-1&1\end{pmatrix}}\rightarrow {\begin{pmatrix}17&13\\1&-1\\-1&2\end{pmatrix}}\rightarrow {\begin{pmatrix}4&13\\2&-1\\-3&2\end{pmatrix}}\rightarrow {\begin{pmatrix}4&1\\2&-7\\-3&11\end{pmatrix}}\Rightarrow 1=47(-7)+30(11)}

实现

以下是扩展欧几里德算法的Python实现:

defext_euclid(a,b):if(b==0):return1,0,aelse:x,y,q=ext_euclid(b,a%b)x,y=y,(x-(a//b)*y)returnx,y,q

扩展欧几里得算法C语言实现:

intgcdEx(inta,intb,int*x,int*y){if(b==0){*x=1,*y=0;returna;}else{intr=gcdEx(b,a%b,x,y);intt=*x;*x=*y;*y=t-a/b**y;returnr;}}

参考文献

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. 算法导论, Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0-262-03293-7. Pages 859–861 of section 31.2: Greatest common divisor.


免责声明:以上内容版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。感谢每一位辛勤著写的作者,感谢每一位的分享。

文章来源:内容词条
——— 没有了 ———
编辑:阿族小谱

更多文章

更多精彩文章
评论 {{commentTotal}} 文明上网理性发言,请遵守《新闻评论服务协议》
游客
发表评论
  • {{item.userName}} 举报

    {{item.content}}

    {{item.time}} {{item.replyListShow ? '收起' : '展开'}}评论 {{curReplyId == item.id ? '取消回复' : '回复'}}

    回复评论
加载更多评论
打赏作者
“感谢您的打赏,我会更努力的创作”
— 请选择您要打赏的金额 —
{{item.label}}
{{item.label}}
打赏成功!
“感谢您的打赏,我会更努力的创作”
返回
打赏
私信

推荐阅读

· 可扩展性
解说可扩放性实际上是和并行算法以及并行计算机体系结构放在一起讨论的。某个算法在某个机器上的可扩放性反映该算法是否能有效利用不断增加的CPU。我们研究可扩放性的目的就是要使算法尽可能的利用最多的处理器,并且我们也可以预测当某个算法移植到大规模处理机上后的运行效果(即问题规模扩大时对处理器的利用情况)。参阅等效率标准等速度标准平均延迟标准并行计算
· C++托管扩展
ManagedC++的重大改变以下列出面向对象程序设计与unmanagedC++之间的差异性。(Globalchange)ExistingC++tobeportedovertheCLRmustbeappendedwiththefollowing:一个新的前置处理引导(preprocessordirective)这是必须的。此外#usingdirectives必须用namespace的方法来import更多的库(libraries),像是BaseClassLibrary,例如:以及来使用WindowsForms。TocompilecodetotargettheCLR,anewcompileroptionmustbeintroduced./clrenablesanycodereferencingthe.NETFrameworktobecompiledasCIL。Aclasscanbedesig...
· 扩展巴科斯范式
基本代码,如由终结符即可视字符、数字、标点符号、空白字符等组成的计算机程序的源代码。EBNF定义了把各符号序列分别指派到非终结符的产生规则:digitexcludingzero="1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9";digit="0"|digitexcludingzero;这个产生规则定义了在这个指派的左端的非终结符digit。竖杠表示可供选择,而终结符被引号包围,最后跟着分号作为终止字符。所以digit是一个"0"或可以是"1或2或3直到9的一个digitexcludingzero"。产生规则还可以包括由逗号分隔的一序...
· 山鬼扩展阅读
简要介绍:《九歌》是一组与楚人祭祀有关的诗篇,是屈原流放江南时在楚地信鬼好祀的风俗的基础上改写而成的一组歌诗。其中《山鬼》一诗,学术界对“山鬼”这一形象的解释以及对《山鬼》通篇主旨的理解没有定论,历来楚辞研究者对《山鬼》的形象与意境的理解说法不一。有以下几种说法:
· 乜姓扩展阅读
乜姓扩展阅读乜姓姓氏名人历代汉族乜姓主要名人录人物名称所处时代家乡籍贯主要事迹乜仁义明代――名士乜子彬民国河北省景州(今河北省景县)少将,曾任92军副军长乜庭宾共和国河北省景县少将,曾任江苏省民政厅副厅长乜小红河北省历史学博士后,曾为武汉大学经济与管理学院教授乜姓鲜卑族的乜姓汉化姓:鲜卑族人改汉姓。南北朝时期,鲜卑族有一首领名叫费乜头,在后周政权为将,所属部下皆称费乜氏。在后周世宗柴荣元年(954年),沙陀族人的北汉神武皇帝刘F(刘崇)趁后周太祖郭威去世之际,与辽国穆宗耶律・Z联手南攻后周,费乜头等率部在后周世宗柴荣指挥下与北汉军大战于高平(今山西省高平市),将北汉军与辽国联军击得大败,刘F穿著农人的衣服随百余骑逃走,辽军亦退走。费乜头因功官升,并被周世宗赐汉姓“乜”。后周世宗在巩固了北部边防之后,持续发兵击败后蜀,收复秦州(今甘肃省秦安县)、阶州(今甘肃省武都区)、成州(今甘肃省成县)、...

关于我们

关注族谱网 微信公众号,每日及时查看相关推荐,订阅互动等。

APP下载

下载族谱APP 微信公众号,每日及时查看
扫一扫添加客服微信