C語言 最大公約數詳解

2021-10-05 18:18:40 字數 1531 閱讀 4160

同樣的,加入x,y有最大公約數t,則x,y都可以被t整除。同時可以發現,如果我們同時給x,y分別乘以m,n他們依然可以被t整除,把兩個數字相加或相減後上述情況任然成立,即c = mx +(±ny),c可以被t整除。在數學中(假設x > y)x/y = a …b,則b = x - a * y;從這裡我們可以得到b也可以被t整除 。因此我們總結出,如果對x,y進行取模運算,把結果賦值給大的乙個數,在繼續上述的步驟,繼續取模運算,會使x,y的值不斷的減小,直到兩數相等時x%y == 0;這時,在迴圈中不為0的乙個數就是x,y的最大公約數 。

流程圖

**

#include

#include

#pragma warning(disable:4996)

intmaxnum

(int num1,

int num2)

else

if(num1 < num2)

else

return num1 ==

0? num2 : num1;}}

intmain()

顧名思義,就是運用迴圈,將兩個數x,y中較小的值賦給i,將x除以i,y也除以i,若兩者的餘數同時為0時,此時的i就是兩者的最大公約數。若不等於0,則將i-1,繼續將x除以i,y除以i,直至餘數同時為0。

流程圖

**:

#include

#include

#pragma warning(disable:4996)

intmaxnum

(int num1,

int num2)

else

for(

; i >

0; i--)}

}int

main()

為了讓大家更容易的理解這個方法,我們先假設數字x,y的最大公約數為t,容易發現x = t + t +…+ t,y = t + t +…+ t,所以當我們用他們之間的大的乙個數減去小的乙個數時,x - y(或y - x)相當於是減少了t的個數,重複上述步驟,當x和y相等時即x - y (或 y-x)= 0時他們之間的t的個數相等,此時x = y = t;

流程圖:

最大公約數

1.執行最大公約數的常用演算法,並新增異常處理模組 如輸入非法等 在基礎程式的基礎上,可以考慮手動輸入所有數字或者利用隨機數產生數字,分別加入異常處理模組。注 隨機數的產生方法 srand 的作用是提供乙個種子。然後呼叫rand 其格式為int rand void 它會根據提供給srand 的種子值...

最大公約數

最大公因數 greatest common divisor 也稱最大公約數 最大公因子,指兩個或多個整數共有約數中最大的乙個。a,b的最大公約數記為 a,b 同樣的,a,b,c的最大公約數記為 a,b,c 多個整數的最大公約數也有同樣的記號。求最大公約數有多種方法,常見的有質因數分解法 短除法 輾轉...

最大公約數

求兩數的最大公約數 簡單嗎?簡單!用多種方法求,可以嗎?emmmmm.應該可以吧?相信絕大多數人都知道求最大公約數的如下 所示的這種方法 include includeint commondivisor int x,int y min return min int main 先判斷兩個數的大小,將較...