1. 程式人生 > 其它 >一個數裡有那些約數用c++怎麼做_兩數的最大公約數你會求嗎?(內附完整演算法程式碼)...

一個數裡有那些約數用c++怎麼做_兩數的最大公約數你會求嗎?(內附完整演算法程式碼)...

技術標籤:一個數裡有那些約數用c++怎麼做最大公約數怎麼求演算法求最大公約數c語言程式碼輾轉相除法c語言程式碼輾轉相除法求最大公約數

兩個數的最大公約數怎麼求?

思考題目的同時,我在這也順便發出三個靈魂疑問?

  • 什麼又是更相減損法?
  • 什麼又是輾轉相除法?
  • 什麼又是歐幾里得演算法?

不懂沒關係,往下看

  1. 要解決兩數的最大公約數問題?,你首先要知道什麼是兩數的公約數
  2. 解釋:
  • 最大公因數,也稱最大公約數、最大公因子,指兩個或多個整數共有約數中最大的一個。
  • 如果數a能被數b整除,a就叫做b的倍數,b就叫做a的約數。約數和倍數都表示一個整數與另一個整數的關係,不能單獨存在。如只能說16是某數的倍數,2是某數的約數,而不能孤立地說16是倍數,2是約數
  • ==例子:== 12、16的公約數有1、2、4,其中最大的一個是4,4是12與16的最大公約數,一般記為(12,16)=4。12、15、18的最大公約數是3,記為(12,15,18)=3。

那如何求呢?

其實這個問題的解法就在我開頭提的三個疑問中。解決兩數的最大公約數問題,可以有很多種方法,而上面提到的二種是最常見的(因為有一種是重複的)

畫重點了:
歐幾里得演算法分析:

1.歐幾里德演算法又稱輾轉相除法,簡稱gcd
2, 該演算法原理:以除數和餘數反覆做除法運算,當餘數為 0 時,取當前算式除數為最大公約數
3.該演算法證明:請同志們移至 度娘

gcd流程圖:

96e2bbad9cf34598eb6d8aa3b1fdb64b.png

如果gcd演算法不好理解,那解決這道問題,可以直接用“列舉法

”(也稱為暴力演算法

列舉演算法分析:

  • 求a、b兩個數的最大公因數。如果這兩個數的最大公因數恰好是a、b其中一個,那肯定是a、b中較小者。==例如:== 2、4的最大公因數是2
  • 那我們可以先求出a、b最小者,然後讓a、b兩數分別和最小者求餘,直到a、b兩數同時求餘結果為0時就結束迴圈,否則最小值自減一,然後繼續迴圈

上程式碼

Java大哥

1

Python新競大哥

1

最後有興趣一起交流的,可以關注我的公眾號:這裡你能夠學到很實用的技巧,不是常用的我不說,年底還會抽獎送出我學過計算機相關專業的書籍福利。敬請期待!!!!

http://weixin.qq.com/r/SUiMlL-EuOLHrfv39x1b (二維碼自動識別)