您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“怎么使用python輾轉(zhuǎn)相除法求最大公約數(shù)和最小公倍數(shù)”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“怎么使用python輾轉(zhuǎn)相除法求最大公約數(shù)和最小公倍數(shù)”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
輾轉(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)這樣一道題目:
題目:輸入兩個正整數(shù),求其最大公約數(shù)和最小公倍數(shù)。
def func(m,n): a = m b = n # 默認m>n,若不是,則交換 if m < n: m,n = n,m while n != 0: # 對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)
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)
1.算法定義為:在有限的步驟內(nèi)解決數(shù)學問題的程序,即為了解決某項工作或某個問題,所需要有限數(shù)量的機械性或重復性指令與計算步驟。
2.最大公約數(shù):可整除兩個整數(shù)的最大整數(shù)。
3.用兩個數(shù)中較大的整數(shù)除以較小的數(shù),求得商和余數(shù)。
# coding:gbk Num_1 = int(input("請輸入一個整數(shù): ")) Num_2 = int(input("請輸入一個整數(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('輸出這兩個整數(shù)的最大公約數(shù):', Num_1)
讀到這里,這篇“怎么使用python輾轉(zhuǎn)相除法求最大公約數(shù)和最小公倍數(shù)”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內(nèi)容的文章,歡迎關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。