使用遞迴查詢兩個給定數字的最小公倍數的 Haskell 程式


在 Haskell 中,我們將使用遞迴以及 gcd 和 max 函式來查詢兩個給定數字的最小公倍數。在第一個示例中,我們將使用 (gcd) 和 (lcmOfTwoNumbers) 函式,在第二個示例中,我們將使用 (lcm) 和 (lcmOfTwoNumbers a b = lcm a b (max a b)) 函式。

演算法

  • 步驟 1 − 匯入 Prelude 庫以隱藏 gcd 函式。

  • 步驟 2 − 定義兩個使用者定義函式 - gcd 和 lcmOfTwoNumbers,

  • 步驟 3 − 程式執行將從 main 函式開始。main() 函式控制整個程式。它被寫成 main = do。在 main 函式中,變數 a 和 b 分別設定為 15 和 20。然後透過呼叫 lcmOfTwoNumbers a b 計算這兩個數字的最小公倍數,並將結果顯示到控制檯。

  • 步驟 4 − 初始化名為“a”和“b”的變數。它將儲存要計算最小公倍數的數字。

  • 步驟 5 − 在函式呼叫後,使用“show”函式將給定兩個數字的最小公倍數結果列印到控制檯。

示例 1

在這個示例中,兩個數字 a 和 b 的最小公倍數是使用 gcd 函式計算這兩個數字的最大公約數,然後使用該值計算最小公倍數。

import Prelude hiding (gcd)

gcd :: Int -> Int -> Int
gcd a 0 = a
gcd a b = gcd b (a `mod` b)

lcmOfTwoNumbers :: Int -> Int -> Int
lcmOfTwoNumbers a 0 = 0
lcmOfTwoNumbers a b = abs (a * (b `div` (gcd a b)))

main :: IO ()
main = do
   let a = 15
   let b = 20
   putStrLn $ "The LCM of " ++ show a ++ " and " ++ show b ++ " is: " ++ show (lcmOfTwoNumbers a b)

輸出

The LCM of 15 and 20 is: 60

示例 2

在這個示例中,兩個數字 a 和 b 的最小公倍數是使用 max 和 mod 函式計算,然後列印到控制檯。

import Prelude hiding (lcm)
lcm :: Int -> Int -> Int -> Int
lcm a b c
   | c `mod` a == 0 && c `mod` b == 0 = c
   | otherwise = lcm a b (c + 1)

lcmOfTwoNumbers :: Int -> Int -> Int
lcmOfTwoNumbers a b = lcm a b (max a b)

main :: IO ()
main = do
   let a = 15
   let b = 20
   putStrLn $ "The LCM of " ++ show a ++ " and " ++ show b ++ " is: " ++ show (lcmOfTwoNumbers a b)

輸出

The LCM of 15 and 20 is: 60

結論

在數學中,兩個或多個數字的最小公倍數 (LCM) 是所有這些數字的倍數中最小的正整數。在 Haskell 中,可以使用各種數學演算法和遞迴來計算兩個或多個數字的最小公倍數。

更新於: 2023年3月27日

103 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告