python輾轉(zhuǎn)相除法求最大公約數(shù)和最小公倍數(shù)的實(shí)現(xiàn)
輾轉(zhuǎn)相除法求最大公約數(shù)和最小公倍數(shù)
輾轉(zhuǎn)相除法數(shù)學(xué)原理
輾轉(zhuǎn)相除法也稱(chēng)歐幾里得算法,是用來(lái)求兩個(gè)正整數(shù)的最大公約數(shù)的算法。接下來(lái)我們用實(shí)例來(lái)解釋一下。假如我們需要求12和21的最大公約數(shù),用輾轉(zhuǎn)相除法是這樣實(shí)現(xiàn)的:
21 / 12 = 1 (余 9) 12 / 9 = 1(余 3) 9 / 3 = 3 (余 0)
至此,得到21與12的最大公約數(shù)為3(注意:這里的3是第二個(gè)式子取余得到的3,而非最后一個(gè)式子相除得到的),然后把兩個(gè)數(shù)相乘再除以最大公約數(shù)就可以得到最小公倍數(shù):(21*12)/ 3 = 84
python代碼實(shí)現(xiàn)
接下來(lái)我們用python代碼來(lái)實(shí)現(xiàn)這樣一道題目:
題目:輸入兩個(gè)正整數(shù),求其最大公約數(shù)和最小公倍數(shù)。
def func(m,n): ? ? a = m ? ? b = n ? ? # 默認(rèn)m>n,若不是,則交換 ? ? if m < n: ? ? ? ? m,n = n,m ? ? while n != 0: ? ? ? ? # 對(duì)m除n取余 ? ? ? ? r = m % n ? ? ? ? m = n ? ? ? ? n = r ? ? return m,(a*b)/m
print("正整數(shù)m與n的最大公約數(shù)與最小公倍數(shù)分別為:",func(12,21))
正整數(shù)m與n的最大公約數(shù)與最小公倍數(shù)分別為: (3, 84.0)
用遞歸的方式實(shí)現(xiàn)
def rec(m,n): ? ? # 默認(rè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)
Python3 20.輾轉(zhuǎn)相除法
算法分析
1.算法定義為:在有限的步驟內(nèi)解決數(shù)學(xué)問(wèn)題的程序,即為了解決某項(xiàng)工作或某個(gè)問(wèn)題,所需要有限數(shù)量的機(jī)械性或重復(fù)性指令與計(jì)算步驟。
2.最大公約數(shù):可整除兩個(gè)整數(shù)的最大整數(shù)。
3.用兩個(gè)數(shù)中較大的整數(shù)除以較小的數(shù),求得商和余數(shù)。
源代碼
# coding:gbk
Num_1 = int(input("請(qǐng)輸入一個(gè)整數(shù): "))
Num_2 = int(input("請(qǐng)輸入一個(gè)整數(shù): "))
if Num_1 < Num_2:
Tmp_Num = Num_1 # 是交換而不是賦值
Num_1 = Num_2
Num_2 = Tmp_Num
while Num_2 != 0:
Tmp_Num = Num_1 % Num_2
Num_1 = Num_2
Num_2 = Tmp_Num
print('輸出這兩個(gè)整數(shù)的最大公約數(shù):', Num_1)結(jié)果截圖


以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- python求最大公約數(shù)和最小公倍數(shù)的簡(jiǎn)單方法
- Python自定義函數(shù)實(shí)現(xiàn)求兩個(gè)數(shù)最大公約數(shù)、最小公倍數(shù)示例
- Python實(shí)現(xiàn)的求解最小公倍數(shù)算法示例
- Python實(shí)現(xiàn)利用最大公約數(shù)求三個(gè)正整數(shù)的最小公倍數(shù)示例
- Python基于遞歸算法求最小公倍數(shù)和最大公約數(shù)示例
- Python基于遞歸和非遞歸算法求兩個(gè)數(shù)最大公約數(shù)、最小公倍數(shù)示例
- Python 代碼實(shí)現(xiàn)列表的最小公倍數(shù)
- 最小公倍數(shù)Python實(shí)現(xiàn)的方法例子
相關(guān)文章
Python爬蟲(chóng)實(shí)現(xiàn)vip電影下載的示例代碼
這篇文章主要介紹了Python爬蟲(chóng)實(shí)現(xiàn)vip電影下載的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
使用Python實(shí)現(xiàn)PDF頁(yè)面設(shè)置操作
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)PDF頁(yè)面設(shè)置操作,例如旋轉(zhuǎn)頁(yè)面和調(diào)整頁(yè)面順序,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-04-04
Python GUI學(xué)習(xí)之登錄系統(tǒng)界面篇
這篇文章主要介紹了Python GUI學(xué)習(xí)之登錄系統(tǒng)界面篇,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
Python解析Excle文件中的數(shù)據(jù)方法
今天小編就為大家分享一篇Python解析Excle文件中的數(shù)據(jù)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-10-10
pandas 缺失值與空值處理的實(shí)現(xiàn)方法
這篇文章主要介紹了pandas 缺失值與空值處理的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10
python使用xlrd和xlwt讀寫(xiě)Excel文件的實(shí)例代碼
這篇文章主要介紹了python使用xlrd和xlwt讀寫(xiě)Excel文件的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-09-09
Python scrapy爬取蘇州二手房交易數(shù)據(jù)
scrapy的第二個(gè)實(shí)例對(duì)比上一個(gè),在數(shù)據(jù)處理上增加了新的需求,運(yùn)用了管道文件pipelines.py,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06

