python实现辗转相除法求最大公约数和最小公倍数
生活随笔
收集整理的這篇文章主要介紹了
python实现辗转相除法求最大公约数和最小公倍数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
輾轉相除法數學原理
輾轉相除法也稱歐幾里得算法,是用來求兩個正整數的最大公約數的算法。接下來我們用實例來解釋一下。假如我們需要求12和21的最大公約數,用輾轉相除法是這樣實現的:
21 / 12 = 1 (余 9)
12 / 9 = 1(余 3)
9 / 3 = 3 (余 0)
至此,得到21與12的最大公約數為3(注意:這里的3是第二個式子取余得到的3,而非最后一個式子相除得到的),然后把兩個數相乘再除以最大公約數就可以得到最小公倍數:(21*12)/ 3 = 84
python代碼實現
接下來我們用python代碼來實現這樣一道題目:
題目:輸入兩個正整數,求其最大公約數和最小公倍數。 def func(m,n):a = mb = n# 默認m>n,若不是,則交換if m < n:m,n = n,mwhile n != 0:# 對m除n取余r = m % nm = nn = rreturn m,(a*b)/mprint("正整數m與n的最大公約數與最小公倍數分別為:",func(12,21)) 正整數m與n的最大公約數與最小公倍數分別為: (3, 84.0)用遞歸的方式實現
def rec(m,n):# 默認m>n,若不是,則交換if m < n:m,n = n,m# 終止條件 if n == 0:return m,(a*b)/m# 遞歸部分return rec(n,m%n)a = 12 b = 21 print("正整數m與n的最大公約數與最小公倍數分別為:",rec(12,21)) 正整數m與n的最大公約數與最小公倍數分別為: (3, 84.0)總結
以上是生活随笔為你收集整理的python实现辗转相除法求最大公约数和最小公倍数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鲜莲子的功效与作用、禁忌和食用方法
- 下一篇: 银耳梨汤的功效与作用、禁忌和食用方法