求兩數最大公約數的方法有很多,這裡重點介紹這兩種演算法:
輾轉相除法 和 更相減損法。
1、輾轉相除法。
在兩個數中,找出大數,用大數除以小數,得到整數商和餘數,然後再不斷地用除數(原來的小數)除以餘數,直到沒有餘數為止。
那麼除數即為最大公約數。
所以我們可以用乙個迴圈來進行被除數、除數和餘數之間的位置互換。
也可以用goto語句來進行迴圈操作。
要注意的是,goto語句在乙個程式當中最好不要多次出現,否則程式很有可能混亂。
這裡給出乙個利用goto語句完成的程式**:
#includeintps:如果用迴圈來做的時候,我們需要將flag~goto語句中間的部分作為迴圈體。main()
flag:
if (a%b == 0
)
else
system(
"pause");
return0;
}
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的所有公因數中最大的乙個公因...