溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用python輾轉(zhuǎn)相除法求最大公約數(shù)和最小公倍數(shù)

發(fā)布時間:2022-07-16 13:43:17 來源:億速云 閱讀:378 作者:iii 欄目:開發(fā)技術

本文小編為大家詳細介紹“怎么使用python輾轉(zhuǎn)相除法求最大公約數(shù)和最小公倍數(shù)”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“怎么使用python輾轉(zhuǎn)相除法求最大公約數(shù)和最小公倍數(shù)”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

輾轉(zhuǎn)相除法求最大公約數(shù)和最小公倍數(shù)

輾轉(zhuǎn)相除法數(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)

接下來我們用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)

用遞歸的方式實現(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)

Python3 20.輾轉(zhuǎn)相除法

算法分析

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)

結(jié)果截圖


怎么使用python輾轉(zhuǎn)相除法求最大公約數(shù)和最小公倍數(shù)

怎么使用python輾轉(zhuǎn)相除法求最大公約數(shù)和最小公倍數(shù)

讀到這里,這篇“怎么使用python輾轉(zhuǎn)相除法求最大公約數(shù)和最小公倍數(shù)”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內(nèi)容的文章,歡迎關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI