在此程序中,您將學(xué)習(xí)找到兩個(gè)數(shù)字的LCM并顯示它。
要理解此示例,您應(yīng)該了解以下Python編程主題:
兩個(gè)數(shù)字的最小公倍數(shù)(LCM)是可被兩個(gè)給定數(shù)字完全整除的最小正整數(shù)。
例如,LCM為12和14為84。
# 用Python程序求兩個(gè)輸入數(shù)字的L.C.M. def compute_lcm(x, y): # 選擇較大的數(shù)字 if x > y: greater = x else: greater = y while(True): if((greater % x == 0) and (greater % y == 0)): lcm = greater break greater += 1 return lcm num1 = 54 num2 = 24 print("L.C.M.是", compute_lcm(num1, num2))
輸出結(jié)果
L.C.M.是 216
注:為了測(cè)試這個(gè)程序,可以修改num1和num2的值。
該程序分別在num1和num2中存儲(chǔ)兩個(gè)數(shù)字。這些數(shù)字將傳遞給compute_lcm()函數(shù)。該函數(shù)返回兩個(gè)數(shù)字的LCM。
在函數(shù)中,我們首先確定兩個(gè)數(shù)字中的較大者,因?yàn)長(zhǎng).C.M. 只能大于或等于最大數(shù)。 然后,我們使用無(wú)限的while循環(huán)從該數(shù)字開(kāi)始。
在每次迭代中,我們檢查兩個(gè)數(shù)字是否完美地除以我們的數(shù)字。如果是這樣,我們將數(shù)字存儲(chǔ)為L(zhǎng)CM并退出循環(huán)。否則,數(shù)字將增加1,然后循環(huán)繼續(xù)。
上面的程序運(yùn)行較慢。我們可以利用兩個(gè)數(shù)的乘積等于這兩個(gè)數(shù)的最小公倍數(shù)和最大公除數(shù)的乘積來(lái)提高效率。
Number1 * Number2 = L.C.M. * G.C.D.
這是一個(gè)實(shí)現(xiàn)此目的的Python程序。
# 用Python程序求兩個(gè)輸入數(shù)字的L.C.M. # This function computes GCD def compute_gcd(x, y): while(y): x, y = y, x % y return x # 這個(gè)函數(shù)計(jì)算LCM def compute_lcm(x, y): lcm = (x*y)//compute_gcd(x,y) return lcm num1 = 54 num2 = 24 print("L.C.M.是", compute_lcm(num1, num2))
該程序的輸出與以前相同。 我們有兩個(gè)函數(shù)compute_gcd()和compute_lcm()。 我們需要G.C.D. 的數(shù)字以計(jì)算其L.C.M.
因此,compute_lcm()調(diào)用函數(shù)compute_gcd()來(lái)完成此操作。 G.C.D. 使用歐幾里得算法可以有效地計(jì)算出兩個(gè)數(shù)之和。
單擊此處以了解有關(guān)在Python中計(jì)算GCD的方法的更多信息。