利用最大公約數求三個正整數的最小公倍數

2021-07-12 01:02:28 字數 1120 閱讀 4484

在求解兩個數的小公倍數的方法時,假設兩個正整數分別為a、b的最小公倍數為d,最大公約數為c。存在這樣的關係d=a*b/c。通過這個關係式,我們可以快速的求出三個正整數的最小公倍數。

def divisor(a,b):

c = a%b

while c>0:

a=bb=c

c=a%b

return b

x1 = input("input1:")

x2 = input("input2:")

x3 = input("input3:")

x0 = x1*x2/divisor(x1,x2)

x0 = x0*x3/divisor(x0,x3)

print "the least multiple is:%d"%x0

通過函式divisor求解兩個數的最大公約數,然後進行兩次求解最小公倍數即可知道三個正整數x1、x2、x3的最小公倍數。

其實可以通過divisor1函式求兩個數的最小公倍數,再進行巢狀呼叫實現三個數的最小公倍數。

divisor1函式如下:

def divisor1(a,b):

a1 = a

b1 = b

c = a%b

while c>0:

a=bb=c

c=a%b

return a1*b1/b

巢狀過程如下:

x0 = divisor1(divisor1(x1,x2),x3)
可以求得三個正整數的最小公倍數。

tip: a-bx=c,可知當乙個數為a、b的公約數時,同時也是c的約數。

通過最大公約數即可得到最小公倍數的求解。

def min_multi(a,b):

return a*b/divisor1(a,b)

求解質數的函式:

def isprime(n):

for i in range(2,int(n**0.5)+1):

if n%i==0:

return false

return true

求兩個正整數的最大公約數

基本要求 從鍵盤輸入兩個整數,輸出兩個整數的最大公約數。用c或c 語言實現程式解決問題。1.程式風格良好 使用自定義注釋模板 2.使用三種演算法解決問題 3.提供友好的輸入輸出,並進行輸入資料的正確性驗證 方法一 窮舉法 窮舉法,顧名思義,就是乙個乙個試,即遍歷兩個整數中較小的數到零的所有數,如果能...

求兩個正整數的最大公約數

求兩個正整數的最大公約數問題 版本 v1.0 主要功能 1 輾轉相除法 a b得餘數c 若c 0,則b即為兩數的最大公約數,結束 若c 0,則a b,b c,再回去執行 2 相減法 兩整數a和b 若a b,則a a b 若a b,則a 或b 即為兩數的最大公約數,結束 若a b,則再回去執行 3 窮...

求兩個正整數的最大公約數Python版

求兩個數的最大公約數我分別採用輾轉相除法,輾轉相減法,列舉法來求得。最小公倍數就是兩個數之積除以最大公約數的結果。1.將兩整數求餘 a b x 2.如果x 0 則b為最大公約數 3.如果x 0,則 a b b x 繼續從1開始執行 4.也就是說該迴圈的是否繼續的判斷條件就是x是否為0 輾轉相除法 d...