如何快速求最大公約數和最小公倍數

2021-07-31 02:24:00 字數 913 閱讀 9398

可以運用輾轉相除法,

即:(326,78)=(78,326%78);

(78,14)  =(14,78%14);

(14 ,,8 ) =(8,14%8);

(8,6)    =(6,8%6);

(6,,2)   =  (2,,6%2=0);

此時結束;這個時候2就是最大公約數

所用原理是:

1:(a,b)=(a,ka+b),其中a、b、k都為自然數  就是說,兩個數的最大公約數,將其中乙個數加到另乙個數上,得到的新陣列,其公約數不變,比如(4,6)=(4+6,6)=(4,6+2×4)=2。這裡有乙個比較簡單的證明方法來說明這個性質:如果p是a和ka+b的公約數,p整除a,也能整除ka+b。那麼就必定要整除b,所以p又是a和b的公約數,從而證明他們的最大公約數也是相等的。  

2:(0,a)=a  由這兩個性質得到的,就是更相減損術:  (78,14)=(64,14)=(50,14)=(36,14)=(22,14)=(8,14)=(8,6)=(2,6)=(2,4)=(2,2)=(0,2)=2  基本上思路就是大數減去小數,一直減到能算出來為止。不過在平時的計算過程中,往往不必計算到最後一步,比如在上面的過程中,到了(8,6),就已經能夠看出其結果。  我們可以看到,在上面的過程中,由 (78,14)到(8,14)完全可以一步到位,因為(78,14)=(14×5+8,14)=(8,14),由此就誕生出我們的輾轉相除法。

最小公倍數等於,把這兩個數用最大公約數除得到的商相乘,再乘以最大公約數,就得到最小公倍數;

#include int main()

} c=m/a;d=n/a;//最小公倍數

n=c*d*a; //的演算法

printf("%d %d\n",a,n);//迴圈的輾轉相除法的結果

return 0;

}

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

用程式求最大公約數和最小公倍數最容易想到的方法如下 求最大公約數 function max divisor a,b return 1 求最小公倍數 function min multiple a,b return a b 輾轉相除法求最大公約數 function max divisor2 a,b e...

python for練習最大公約數 最小公倍數

需求 輸入兩個數值 求兩個數的最大公約數和最小公倍數.最小公倍數 num1 num2 最大公約數 思路 1.最大公約數小於等於輸入兩個數中最小的數 2.利用迴圈,最後一次迴圈可以被兩個數同時整除的數為最大公約數。1.輸入兩個數值 num1 int input 第乙個數 num2 int input ...

CodeVS1012 最大公約數和最小公倍數問題

題目 題目描述 description 輸入二個正整數x0,y0 2 x0 100000,2 y0 1000000 求出滿足下列條件的p,q的個數 條件 1.p,q是正整數 2.要求p,q以x0為最大公約數,以y0為最小公倍數.試求 滿足條件的所有可能的兩個正整數的個數.輸入描述 input des...