627 字
3 分钟
辗转相除法-求最大公因数

辗转相除法是一种求最大公因数的计算方法。
这种方法在编程中很常用,在数学计算中也可以用来求很复杂的最大公因数问题。
如何使用
题目:求最大公因数(36,14)
我们如何用辗转相除法做这道题呢?
我们算出最大公约数(36,14)=2
到这里,我们就知道如何使用辗转相除法了。
但是,鲁迅曾说过“我们学公式必须得懂得原理”,我们明白了原理才能灵活运用
原理
求最大公因数(a,b)
首先我们推出这几条式子
这是我们辗转法的原理
(a,b)=(b,r) \\a和b的最大公约数就等于b和r的最大公约数 }接下来让我们证明这条公式
这样,我们就得出(a,b)的因数和(b,r)的因数相同,它们的因数都相同,那么它们的最大公因数也就相同。
所以我们要求(a,b)的最大公因数,我们就通过可以求(b,r)的最大公因数来得到。
现在我们再来看看开头的题
题目:求最大公因数(36,14)
反复用(a,b)=(b,r)的方法
(36,14)=(14,8)=(8,6)=(6,2)
最后得到(6,2),显而易见最大公约数是2
写gcd函数
接下来看看我们如何在C++中用辗转相除法写gcd函数
gcd函数就是用来求最大公因数的函数
int gcd(int a,int b) { while (a % b != 0) //a能被b整除时就终止循环 { int r = a % b; a = b; b = r; //讲a换成除数b,b换成余数r }当然也可以直接用algorithm头文件中的gcd函数,
我们学会自己写是为了理解原理,提升思维,
自己写还可以在有特殊需求的时候更自定义化。
辗转相除法-求最大公因数
https://blog.fiveth.cc/posts/euclidean/分享文章
生成精美分享图或复制链接,与更多人分享本文。
继续阅读
换条路线
从其他文章中稳定抽取
最后更新于 ,距今已过 1382 天
部分内容可能已过时
评论