習題4 7 最大公約數和最小公倍數(輾轉相除法)

2021-08-28 03:27:47 字數 753 閱讀 8610

本題要求兩個給定正整數的最大公約數和最小公倍數。

輸入在一行中給出兩個正整數m和n(≤1000)。

在一行中順序輸出m和n的最大公約數和最小公倍數,兩數字間以1空格分隔。

511 292
73 2044
法一:直接翻譯最小公倍數和最大公約數的數學意思。

#include int main(void) 

/*最大公約數:m除以這個數餘0,n除以這個數也餘0,且是公因子中最大的*/

int f1(int m, int n)

/*最小公倍數:這個數既是m的倍數,也是n的倍數,且是倍數中最小的*/

int f2(int m, int n)

法二:輾轉相除法

找到較大數、較小數。

大數對小數求餘。

小數賦給大數。

餘數賦給小數。

/*輾轉相除法*/

int f1( int m, int n )

ret = max; //最大公約數。

return ret;

}

合併在一起的**:

#include int main(void) 

for (i = 1; ; i++)

if (min * i % max == 0)

return 0;

}

習題4 7 最大公約數和最小公倍數

本題要求兩個給定正整數的最大公約數和最小公倍數。輸入在一行中給出兩個正整數m和n 1000 在一行中順序輸出m和n的最大公約數和最小公倍數,兩數字間以1空格分隔。511 29273 2044分析 關鍵是將最大公約數和最大公倍數的求解邏輯理清楚,最大公約數可以用列舉的方法找到最大值,最小公倍數就是m ...

最大公約數 最小公倍數

求最大公約數最直接的辦法是從兩數中較小數與2之間的所有整數中乙個乙個的找。但這個方法有點浪費。有兩種有名的方法 1.輾轉相除法2.更相減損之術這兩種方法比較有名,而且現在人教版的高中數學中已經介紹了這兩種方法。下面這個是第2個,因為它只需要加減法就可以,效率高。int maxfactor unsig...

最小公倍數 最大公約數

求最小公倍數演算法 最小公倍數 兩整數的乘積 最大公約數 求最大公約數演算法 1 輾轉相除法 有兩整數a和 b a b得餘數c 若c 0,則 b即為兩數的最大公約數 若c 0,則 a b,b c,再回去執行 例如求27和 15的最大公約數過程為 27 15 餘12 15 12餘3 12 3餘0 因此...