`
gaojingsong
  • 浏览: 1182117 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

辗转相除法

阅读更多

辗转相除法, 又名欧几里德算法(Euclidean algorithm)乃求两个正整数之最大公因子的算法。它是已知最古老的算法, 其可追溯至3000年前。

 

设两数为a、b(a>b),求a和b最大公约数(a,b)的步骤如下:用a除以b,得a÷b=q......r1(0≤r1)。若r1=0,则(a,b)=b;若r1≠0,则再用b除以r1,得b÷r1=q......r2 (0≤r2).若r2=0,则(a,b)=r1,若r2≠0,则继续用r1除以r2,……如此下去,直到能整除为止。其最后一个为被除数的余数的除数即为(a, b)。

例如:a=25,b=15,a/b=1......10,b/10=1......5,10/5=2.......0,最后一个为被除数余数的除数就是5,5就是所求最大公约数。

 

 

 

原理

设两数为a、b(a<b),用gcd(a,b)表示a,b的最大公约数,r=a (mod b) 为a除以b的余数,k为a除以b的商,即a÷b=k.......r。辗转相除法即是要证明gcd(a,b)=gcd(b,r)。

第一步:令c=gcd(a,b),则设a=mc,b=nc

第二步:根据前提可知r =a-kb=mc-knc=(m-kn)c

第三步:根据第二步结果可知c也是r的因数

第四步:可以断定m-kn与n互质【假设m-kn=xd,n=yd (d>1),则m=kn+xd=kyd+xd=(ky+x)d,则a=mc=(ky+x)cd,b=nc=ycd,则a与b的一个公约数cd>c,故c非a与b的最大公约数,与前面结论矛盾】,因此c也是b与r的最大公约数。

从而可知gcd(b,r)=c,继而gcd(a,b)=gcd(b,r)。

证毕。

以上步骤的操作是建立在刚开始时r≠0的基础之上的。即m与n亦互质。

 

 

 

相关原理

两个整数的最大公约数是能够同时整除它们的最大的正整数。

辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的相除余数的最大公约数。

例如,252和105的最大公约数是21(252 = 21 × 12;105 = 21 × 5);

因为252 ÷105 = 2......42,所以(105,42)是21。在这个过程中,较大的数缩小了,所以继续进行同样的计算可以不断缩小这两个数直至余数变为零。这时的除数就是所求的两个数的最大公约数。由辗转相除法也可以推出,两数的最大公约数可以用两数的整数倍相加来表示,如21 = 5 × 105 + (−2) × 252。这个重要的等式叫做贝祖等式(又称“裴蜀定理”)。

0
4
分享到:
评论

相关推荐

    辗转相除法证明 辗转相除法证明

    标题与描述均提到了“辗转相除法证明”,这一表述实际上是在强调对于辗转相除法(也称为欧几里得算法)的证明过程。辗转相除法是一种在数学领域广泛应用的算法,主要用于求解两个正整数的最大公约数(GCD)。下面,...

    辗转相除法(算法源代码)

    辗转相除法,又称欧几里得算法,是求解两个正整数最大公约数(Greatest Common Divisor, GCD)的一种古老而有效的方法。这个算法基于以下定理:对于任意两个正整数a和b(a&gt;b),它们的最大公约数等于a除以b的余数c和...

    辗转相除法计算乘法逆元及C语言实现-密码学

    在探讨辗转相除法如何应用于计算乘法逆元之前,我们首先需要了解几个基本概念: 1. **乘法逆元**:在模数算术中,对于一个整数\( a \)和模数\( n \),如果存在一个整数\( x \),使得\( a \cdot x \equiv 1 \pmod{n}...

    用辗转相除法求最大公约数

    根据给定的信息,我们可以提取并总结出以下与“用辗转相除法求最大公约数”相关的知识点: ### 1. 辗转相除法(欧几里得算法)原理 辗转相除法是一种用于计算两个正整数最大公约数(Greatest Common Divisor, GCD...

    欧几里得计算器/辗转相除法计算器(带过程)

    一个小小的exe文件,其中是我在学习网络安全数学期间编写的欧几里得除法/辗转相除法计算器。 也就是根据两个互素的整数a和b,通过辗转相除法算出两个整数s,t,使得sa+tb=1。

    JAVA辗转相除法求最大公约数

    利用辗转相除法求两个数的最大公约数。要求能接受用户的输入,输出最大公约数。 辗转相除法原理: 已知a,b,c为正整数,若a除以b余c,则(a,b)=(b,c),其中用(a,b)来表示a和b的最大公约数。(证明过程请参考其它...

    信息安全与保密概论(华中科技大学)辗转相除法求模的逆元

    本篇将详细介绍如何使用辗转相除法,也称欧几里得算法,来求解模的逆元。 辗转相除法最初是为了解决两个正整数的最大公约数问题。然而,通过一定的变形,这个算法也可以用来寻找一个整数A关于模N的逆元B,使得A×B ...

    C#辗转相除法

    在编程领域,辗转相除法(也称为欧几里得算法)是一种用于计算两个正整数最大公约数(Greatest Common Divisor, GCD)的高效算法。在C#编程中,我们可以用多种方法实现这一算法。下面我们将深入探讨辗转相除法的基本...

    辗转相除法求最大公约数

    m = 9147485 n = 5147480 辗转相除法求最大公约数 最大公约数=?

    多项式辗转相除法

    实现多项式辗转相除法,多项式的系数精确至小数点后两位,具有良好的交互界面。

    欧几里得辗转相除法原理

    欧几里得辗转相除法,又称欧几里得算法,是古希腊数学家欧几里得提出的一种求解最大公约数(Greatest Common Divisor, GCD)的有效方法。这个算法基于以下基本原理:两个正整数a和b(a&gt;b),它们的最大公约数等于a...

    C语言程序设计-用辗转相除法求两个整数的最大公约数;.c

    C语言程序设计-用辗转相除法求两个整数的最大公约数;.c

    从几何角度阐释辗转相除法.pdf

    从几何的角度描述了辗转相除法的基本原理,非常值得借鉴

    辗转相除法源代码.cpp

    c++编写的辗转相除法代码,可输入数字进行辗转相除运算(具有详细步骤),便于对辗转相除运算问题进行验证求解。

    辗转相除法,求最大公约数和最小公倍数

    辗转相除法,求最大公约数和最小公倍数。(网上收集的,自己学习用)。Ubuntu10.04+GCC4.4.3

    欧几里德辗转相除法求最大公约数的C++实现

    欧几里德辗转相除法求最大公约数的C++实现 嗯,很经典、很简单的一个算法,是很多算法书的开篇第一个算法

Global site tag (gtag.js) - Google Analytics