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

很簡單的數學問題,不過大家是否能夠準確實現?

求最大公約數(greatest common divisor)的方法:

一、輾轉相除

①設有兩個正整數i、j, 且i>j;

②計算c=i%j;

③若c等於0,則j是i和j的最大公約數;若c不等於0,則i=j,j=c;

④重複②③直到求得最大公約數;


二、相減法

①設有兩正整數i、j;

②若i等於j,則i或j就是兩數的最大公約數;

③若i>j,i=i-j ;否則,j=j-i;

④重複②③直到得到最大公約數


三、暴力枚舉

①設有兩正整數i、j;

②假設i<j,令k=i,

③i,j分別對k求餘,若餘數都爲0,則k爲i、j最大公約數;否則k--,繼續執行③,直到求出兩數最大公約數;


求最小公倍數(least common multiple)的方法:

一、暴力枚舉

①設有正整數i,j,不妨設i>j;

②令k=i;

③k分別對i,j求餘,若餘數均爲零,則k爲i,j的最小公倍數;否則令k+=i,重複③,直到求出最小公被數;


二、根據最大公約數和最小公倍數的關係求解

LCM(i,j) = i*j / GCD(i,j);

兩正整數的最小公倍數等於兩數的積除以兩數的最大公約數,最大公約數可以由前面的公式計算;




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