求最大公約數和最小公倍數

2021-08-15 08:15:15 字數 1952 閱讀 4058

求最小公倍數實質上是基於求最大公約數的基礎上的

最小公倍數

=

兩整數的乘積÷最大公約數

求最大公約數的方法有三種:

(基於對時間複雜度的角度考錄比較常用的是輾轉相除法)

一.

輾轉相除法

例1 。求兩個正數8251和6105的最大公因數。

(分析:輾轉相除→餘數為零→得到結果)

解:8251=6105×1+2146

顯然8251與6105的最大公因數也必是2146的因數,同樣6105與2146的公因數也必是8251的因數,所以8251與6105的最大公因數也是6105與2146的最大公因數。

6105=2146×2+1813

2146=1813×1+333

1813=333×5+148

333=148×2+37

148=37×4+0

則37為8251與6105的最大公因數。

以上我們求最大公因數的方法就是輾轉相除法。也叫歐幾里德演算法,它是由歐幾里德在西元前300年左右首先提出的。

:為什麼用這個演算法能得到兩個數的最大公因數?

利用輾轉相除法求最大公因數的步驟如下:

第一步:用較大的數m除以較小的數n得到乙個商q0和乙個餘數r0;

第二步:若r0=0,則n為m,n的最大公因數;若r0≠0,則用除數n除以餘數r0得到乙個商q1和乙個餘數r1;

第三步:若r1=0,則r1為m,n的最大公因數;若r1≠0,則用除數r0除以餘數r1得到乙個商q2和乙個餘數r2;

…… 依次計算直至rn=0,此時所得到的rn-1即為所求的最大公因數。

二.相減法

(兩數作差 再用小的數減得數 直到等於0)

有兩整數a和b:

① 若a>b,則a=a-b

② 若a

③ 若a=b,則a(或b)即為兩數的最大公約數

④ 若a≠b,則再回去執行①

例如求27和15的最大公約數過程為:

27-15=12( 15>12 ) 15-12=3( 12>3 )

12-3=9( 9>3 ) 9-3=6( 6>3 )

6-3=3( 3==3 )

因此,3即為最大公約數

三.窮舉法

就是設出乙個常量t,該常量在0到輸入的倆數里較小的那個數(a和b)之間,用判斷

for (

t = a ; t > 0 ; t ++

if ( a % t ==0 && b % t==0 )

break ;

求最大公約數,最小公倍數

歐幾里德遞迴演算法,大數對小數取餘直到小數為0,大數為最大公約數 param m param n return static int maxcommondivisor euclid recursion int m,int n return m 劉徽兩數相減直到兩數相等,等數為最大公約數 param ...

求最大公約數和最小公倍數

本篇文章中求最大公約數的方法是輾轉相除法,又稱歐幾里德演算法 方法是用較大的數除以較小的數,求得餘數,將餘數變成除數,除數變成被除數,重複這個過程,直到餘數變成0。而求最小公倍數的方法則是用原本兩個數的乘積除以最大公約數。define crt select no warings include in...

求最大公約數和最小公倍數

輾轉相除法求最大公因數 輾轉相除法 簡單來說 兩個數,用較大的數除以較小的數,得到第一餘數,在用較小的數除以第乙個餘數,得到第二餘數,在用第二個餘數除以第一餘數,重複過程,直到到餘數為0 那麼最後乙個餘數就是這兩個數的最大公約數 舉例說明 a 36,b 10 1.36除以10得3,餘6 2.10除以...