描述
給出兩個正整數,求出它們的最大公約數和最小公倍數。
輸入 第一行輸入乙個整數n(0
#include
int main()
u=(a*b)/m; //最小公倍數等於他們的乘機除以最大公約數
printf("%d
%d\n",m,u);
}return
0; }
執行結果:
附加相應知識點:
1,最大公約數與最小公倍數的一般求法
將每個數用2、3、5、7等素因子(不能再分解為其他兩個正整數的自然數)的乘積,最大公約數就是相同素因子的乘積;而最小公倍數則是相同的取一次,和其他所有的素因子的乘積。
例:40=2*2*2*5
30=2*3*5
最大公約數:兩個式子中都有乙個2和5,所有最大公約數就是2*5=10.
最小公倍數:2和5只取一次,其他還有2、2和3;所有最小公倍數是2*5*2*2*3=120.
2,輾轉相除法求最大公約數
求最大公因數的方法就是輾轉相除法。也叫歐幾里德演算法,它是由歐幾里德在西元前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即為所求的最大公因數。
例如:
求兩個正數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的最大公因數
求出最大公約數後則,最小公倍數等於兩個數的乘積除以它們的最大公約數
1183 公約數和公倍數
1183 公約數和公倍數 description 小明被乙個問題給難住了,現在需要你幫幫忙。問題是 給出兩個整數,求出他們的最大公約數和最小公倍數。input 第一行輸入乙個大於0的整數n n 20 表示有n組測試資料隨後的n行輸入兩個整數i,j i,j小於32767 output 輸出每組測試資料...
題目40 公約數和公倍數
小明被乙個問題給難住了,現在需要你幫幫忙。問題是 給出兩個正整數,求出它們的最大公約數和最小公倍數。第一行輸入乙個整數n 0輸出每組測試資料的最大公約數和最小公倍數 3 6 6 12 11 33 22 6 6 1 132 11 66 歐幾里得輾轉相除法,輸入a,b,設a b,ans a mod b ...
No 6 公約數和公倍數
輸入兩個正整數m和n,求其最大公約數和最小公倍數。程式分析 利用輾除法。public class num6 求公約數,相當於比較質數 public static intcompareprimenumbers int a,int b for a i 0 for b i 0 z l m l m i sy...