用C語言實現 求兩數的最大公約數。

2022-09-01 18:39:07 字數 992 閱讀 8595

求兩數最大公約數的方法有很多,這裡重點介紹這兩種演算法:

輾轉相除法 和 更相減損法。

1、輾轉相除法。

在兩個數中,找出大數,用大數除以小數,得到整數商和餘數,然後再不斷地用除數(原來的小數)除以餘數,直到沒有餘數為止。

那麼除數即為最大公約數。

所以我們可以用乙個迴圈來進行被除數、除數和餘數之間的位置互換。

也可以用goto語句來進行迴圈操作。

要注意的是,goto語句在乙個程式當中最好不要多次出現,否則程式很有可能混亂。

這裡給出乙個利用goto語句完成的程式**:

#includeint

main()

flag:

if (a%b == 0

)

else

system(

"pause");

return0;

}

ps:如果用迴圈來做的時候,我們需要將flag~goto語句中間的部分作為迴圈體。

2、更相減損法。

這個演算法原出自於《九章算術》中,將演算法內容用現代漢語翻譯後為:

第一步:任意給定兩個正整數;判斷它們是否都是偶數。若是,則用2約簡;若不是則執行第二步。

第二步:以較大的數減較小的數,接著把所得的差與較小的數比較,並以大數減小數。繼續這個操作,直到所得的減數和差相等為止。

則第一步中約掉的若干個2與第二步中等數的乘積就是所求的最大公約數。

**如下:

c語言實踐 求兩個數的最大公約數

我的思路是這樣的 比如12和16這兩個數。先理解一下概念,什麼叫最大公約數。就是12有很多個因數,16也有很多個因數,這兩堆因數中有一些重合的因數,在這些重合的因數中找到那個最大的。那麼最大公約數一定是兩個數的公約數,且最大公約數一定再12的因數中尋找的。ok,我們先對12求除所有的因數,那麼需要乙...

求若干數的最大公約數

求若干數的最大公約數可以利用將其轉化為求兩個數的最大公約數,將求得的最大公約數再與第三個數一起求最大公約數,直到最後乙個數結束。下面介紹求倆個數的最大公約數的方法,具體求多個數的的程式我沒有具體去寫,思路就是這樣。求最大公約數演算法 1 輾轉相除法 兩整數a和b a b得餘數c 若c 0,則b即為兩...

C語言 求兩個數的最大公約數

求兩個數的最大公約數。最大公約數定義 如果a,b是非零整數,而整數q同時是a,b的因數,我們便把q叫做a,b的公因數。顯然,q的絕對值必然不大於a,b的絕對值的最小者,即 q min 上式表明,兩個非零整數的公因數必只有有限多個,於是,其中一定存在乙個最大的。我們把a,b的所有公因數中最大的乙個公因...