最小公倍數 ( 多個數字 )
這篇文章會介紹使用 Python 的串列、for 迴圈、while 迴圈 和 if 判斷式,讓使用者輸入多個數字後,自動計算出這幾個數字的最小公倍數。
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
什麼是最小公倍數?
「公倍數」是指不同數字間共同的倍數,而最小公倍數,就是這些倍數裡最小的那個數字,下圖的例子可以看出 2、3、4 三個數字裡有 12、24...等的公倍數,而 12 就是它們的最小公倍數。
基本原理
要求出有多個數字的最小公倍數,最簡單的方法就是先將「最大的數字」當作「暫定的最小公倍數」,用它依序除以其他的數字,如果無法整除,就將「暫定的最小公倍數 + 最大的數字」,然後繼續除以其他數字,直到全部都整除為止,就會得到最小公倍數。
編輯程式
按照最小公倍數的原理,編輯程式,當中會使用 list()、sort() 排序、split() 拆分字串...等方法操作字串與串列,也會使用 while 迴圈 與 for 迴圈 進行重複的行為。
input_str = input('輸入數字 ( 逗號分隔 ):') # 讓使用者輸入數字,數字間用逗號分隔
nums = input_str.split(',') # 將輸入的文字,用逗號拆分成串列
for i in range(len(nums)): # 將串列的每個項目轉換成文字
nums[i-1] = int(nums[i-1])
nums.sort(reverse=True) # 將串列從大到小排序
result = nums[0] # 設定「暫定的最小公倍數」為最大的數字
while True: # 執行 while 迴圈
a = 0 # 新增 a 變數,當作餘數使用
for i in nums: # 依序取出串列中的每個數字
a = result%i # 用「暫定的最小公倍數」除以每個數字,求出餘數
if a != 0: # 如果餘數不為 0,跳出 for 迴圈再來一次
break
if a == 0: # 如果全部餘數都為 0,跳出 while 迴圈
break
else:
result = result + nums[0] # 如果餘數不為 0,就將「暫定的最小公倍數」加上最大的數字,然後再來一次
print(result) # while 迴圈結束後,印出最小公倍數
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~