公約數和公倍數

2021-08-01 09:37:04 字數 1292 閱讀 4492

描述

給出兩個正整數,求出它們的最大公約數和最小公倍數。

輸入 第一行輸入乙個整數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...