求最大公因数的三种算法及简要说明
生活随笔
收集整理的這篇文章主要介紹了
求最大公因数的三种算法及简要说明
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
求最大公因數的三種算法及簡要說明
1、連續整數法
從給定的最小的數開始按1遞減,直至找到一個能被兩者都整除的數。 public static int gcd1(int x, int y){int min = Math.min(x,y);while (x%min!=0|| y%min!=0){min--;}return min;}2、輾轉相除法
也叫歐幾里得算法,兩個整數的最大公約數等于其中較小的那個數和兩數相除余數的最大公約數證明:
假設正整數a>b,有a = kb + r(k,r皆為正整數,且r<b)
假設存在正整數d為a和b的公因數,即d|a,d|b.
而r = a - kb=a mod b,兩邊同時除以d,r/d=a/d-kb/d=m,由等式右邊可知m為整數,
因此d|r
因此d也是b,a mod b的公約數。
因(a,b)和(b,a mod b)的公約數相等,則其最大公約數也相等.QED.
3、更相減損法
兩個奇數的最大公約數等于兩者之和的一半與兩者之差的一半的最大公約數,從而減小兩個數之間的差值,直到逼近為一個數,即最大公約數。證明:gcd(a,b)= gcd ((a+b)/2,(a-b)/2) , a,b都為奇數
設 a = md , b = nd, d = gcd(a,b), m, n, d 都為奇數
(a+b)/2 = (m+n)/2d, (a-b)/2 = (m-n)/2d。兩者都為d的整數倍
且倍數不同時為偶數(反證法易證)。QED。
總結
以上是生活随笔為你收集整理的求最大公因数的三种算法及简要说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python随机生成无序列表_pytho
- 下一篇: 小程序--语音合成tts 对接多平台(讯