很簡單的數學問題,不過大家是否能夠準確實現?
求最大公約數(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);
兩正整數的最小公倍數等於兩數的積除以兩數的最大公約數,最大公約數可以由前面的公式計算;