貝祖公式證明

貝祖公式證明

前言:最近寫一道算法題的過程中,遇到了關於貝祖公式的題目,發現其實很簡單。根據前人總結證明方法,進行歸納,在此證明。

一. 歐幾里得算法

要證明貝祖公式,首先需要知道歐幾里得算法,歐幾里得算法也叫輾轉相除法,用於求兩個整數之間的最大公約數。
公式如下:

gcd(a,b) = gcd(b,a mod b) (a>b 且 a mod b 不爲0)

證明如下:

  1. 因爲a>b,所以a可以表示爲kb+r,r=a mod b
  2. 從左往右看,假設d是a,b的一個公約數,那麼a和b都可以被d整除,r=a-kb,自然r也可以被d整除,所以d也是(b,r),也就是(b,a mod b)的公約數。
  3. 反過來,假如d是b和r = a mod b的一個公約數,則有b和r都可以被d整除,根據a=kb+r,自然a也可以被d整除,所以d也是(a,b)的公約數。
  4. 因此,(a,b)和(b,a mod b)的公約數一致,自然最大公約數也一致。

歐幾里得算法應用:不斷運用該算法,即“兩個整數的最大公約數,等於其中較小的那個數和較大數對較小數取模結果的最大公約數。” 將兩個數縮小,直到一個數爲0,另一個數就是最小公約數
eg,求12和42的最大公約數,gcd(12,42) = gcd(12,6)=gcd(6,0)=6

二、貝祖公式

  1. 根據前面推導的歐幾里得算法,貝祖公式就應運而生啦!
  2. 兩個數的最大公約數可以用兩個數的整數倍相加表示,比如6 = 42×1 + 12×(-3)
  3. 具體公式爲:

給定兩個整數a和b,一定存在整數x和y,使得ax+by = gcd(a,b)

  1. 下面我們來證明貝祖公式爲什麼是對的?

假設 a>b,當b>0時:

  • 假設,a和b的貝祖公式解爲x1和y1,即a·x1+b·y1 = gcd(a,b)

  • 假設,b和a mod b的貝祖公式的解爲x2和y2,即b·x2+(a mod b)·y2 = gcd(b,a mod b)

  • 根據歐幾里得算法,我們可以知道,gcd(a,b)=gcd(b,a mod b)

  • 因此,a·x1+b·y1 = b·x2+(a mod b)·y2

  • a·x1+b·y1 = b·x2+(a - [a/b]·b )·y2 = a·y2 + b·(x2 - [a/b]·y2 )

  • 一一對應,可以得到兩個等式:
    x1 = y2 ①
    y1 = (x2 - [a/b]·y2 ) ②

  • 即,a和b貝祖公式的解,可以通過b和a mod b的貝祖公式的解得到,這樣就構成了一個遞歸求解的過程,根據歐幾里得算法,層層向下,一直到一個數爲0(即b=0時),另一個數是最小公約數。

  • 因爲b=0,gcd(a,b) = a,貝祖公式 ax = gcd(a,b) = a,x=1,y可以取0。然後再回溯計算,就可以得到最終的x1和y1啦!(^-^)V

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章