欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理:
定理:gcd(a,b) = gcd(b,a mod b)
证明:a可以表示成a = kb + r,则r = a mod b
假设d是a,b的一个公约数,则有 d|a, d|b,而r = a - kb,因此d|r
因此d是(b,a mod b)的公约数
假设d 是(b,a mod b)的公约数,则 d | b , d |r ,但是a = kb +r 因此d也是(a,b)的公约数
因此(a,b)和(b,a mod b)的公约数是一样的,其最大公约数也必然相等,得证。
欧几里德算法就是根据这个原理来做的,其算法用JAVA语言描述为:
public int gcd(int m, int n) {
if(n > m) {
n = n ^ m;
m = m ^ n;
n = n ^ m;
}
while(n != 0) {
int temp = m % n;
m = n;
n = temp;
}
return m;
}
当然还有个递归版的, 其实gcd函数一般不会递归调用很多次, 所以递递归还是不错的:
public int gcd(int a, int b)
{
if (b > 0)
{
return gcd(b, a % b);
}
return a;
}
转自:http://www.cnblogs.com/dah/archive/2007/03/06/666114.html
分享到:
相关推荐
根据给定的信息,我们可以提取并总结出以下与“用辗转相除法求最大公约数”相关的知识点: ### 1. 辗转相除法(欧几里得算法)原理 辗转相除法是一种用于计算两个正整数最大公约数(Greatest Common Divisor, GCD...
辗转相除法,又称为欧几里得算法,是一种古老且高效的求解两个非负整数最大公约数(Greatest Common Divisor, GCD)的方法。该算法基于一个基本原理:两个整数a和b(假设a>b)的最大公约数等于b和a除以b的余数的最大...
欧几里得辗转相除法,又称欧几里得算法,是古希腊数学家欧几里得提出的一种求解最大公约数(Greatest Common Divisor, GCD)的有效方法。这个算法基于以下基本原理:两个正整数a和b(a>b),它们的最大公约数等于a...
在本主题中,我们将深入探讨如何使用辗转相除法(也称为欧几里得算法)来求解两个数的最大公因子。 辗转相除法,源于古希腊数学家欧几里得的一项伟大发现,是一种高效计算最大公因子的方法。其基本思想是:对于任何...
辗转相除法,又称欧几里得算法(Euclidean Algorithm),是一种高效的求解最大公约数的方法。该算法基于这样一个事实:两个正整数a和b(a>b)的最大公约数等于a除以b的余数c和b之间的最大公约数。如果余数为0,那么b...
辗转相除法,又称欧几里得算法,是求解两个正整数最大公约数(Greatest Common Divisor, GCD)的一种古老而有效的方法。这个算法基于以下定理:对于任意两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和...
在数学和计算机科学中,求解两个整数的最大公约数(Greatest Common Divisor,GCD)是一个常见的问题,辗转相除法(也称欧几里得算法)是一种简单而有效的方法。Python作为一种高级编程语言,它提供了丰富的库和简洁...
欧几里得算法,也称为辗转相除法,是解决这一问题的经典算法,其历史可以追溯到古希腊数学家欧几里得的著作《几何原本》。本篇将详细介绍欧几里得算法及其扩展形式,并展示如何在编程中实现。 欧几里得算法基于以下...
欧几里得算法,又称辗转相除法,是古希腊数学家欧几里得提出的一种求解两个正整数最大公约数(Greatest Common Divisor, GCD)的有效方法。这个算法基于一个基本事实:两个正整数a和b(a>b)的最大公约数等于a除以b...
本篇将详细介绍如何使用辗转相除法,也称欧几里得算法,来求解模的逆元。 辗转相除法最初是为了解决两个正整数的最大公约数问题。然而,通过一定的变形,这个算法也可以用来寻找一个整数A关于模N的逆元B,使得A×B ...
标题与描述均提到了“辗转相除法证明”,这一表述实际上是在强调对于辗转相除法(也称为欧几里得算法)的证明过程。辗转相除法是一种在数学领域广泛应用的算法,主要用于求解两个正整数的最大公约数(GCD)。下面,...
2. **辗转相除法(欧几里得算法)**:一种用于求最大公约数(GCD)的经典算法。其基本思想是利用较大的数除以较小的数,然后用较小的数去除以余数,如此循环直到余数为0为止,此时较小的数就是两数的最大公约数。 3. ...
欧几里得算法,也称为辗转相除法,是计算两个正整数最大公约数(Greatest Common Divisor, GCD)的一种经典方法。该算法基于以下原理:两个正整数a和b(a>b)的最大公约数等于a除以b的余数c和b之间的最大公约数。...
通过欧几里得算法求到最大公约数,然后得出最小公倍数
辗转相除法,又称欧几里得算法,是一种古老的用于计算两个正整数最大公约数(Greatest Common Divisor, GCD)的方法。该方法基于一个数学原理:对于任意两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b...
辗转相除法求最大公约 辗转相除法,也称为欧几里得算法,是求解两个整数的最大公约数的一种有效方法。
### 最大公约数辗转相除法 #### 一、引言 最大公约数(Greatest Common Divisor,简称 GCD)是指能同时整除两个或多个整数的最大正整数。在数学和计算机科学领域中,求解最大公约数是一个非常基础且重要的问题。...
辗转相除法,又称欧几里得算法,是求解两个正整数最大公约数(Greatest Common Divisor,GCD)的一种经典方法。这种方法由古希腊数学家欧几里得提出,至今仍被广泛应用于计算机科学中。在C语言中实现辗转相除法,...