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