使用庫函式查詢最小公倍數的Haskell程式


在Haskell中,我們可以使用GCD函式來查詢給定數字的最小公倍數。在第一個例子中,我們將使用(a * b) `div` (gcd a b)函式,在第二個例子中,我們將使用foldl' (\x y -> (x*y) `div` (gcd x y))函式。在第三個例子中,我們將使用gcd' b (a `mod` b)函式。

演算法

  • 步驟1 − 最小公倍數函式使用最大公約數函式定義為:lcm a b = (a * b) `div` (gcd a b)。

  • 步驟2 − 程式執行將從main函式開始。main()函式控制整個程式。它寫成main = do。它呼叫帶有值的lcm函式並列印兩個數的最小公倍數。

  • 步驟3 − 變數“a”和“b”被初始化。它將儲存要查詢最小公倍數的兩個值。

  • 步驟4 − 函式呼叫後,使用‘putStrLn’語句將結果的最小公倍數值列印到控制檯。

示例1

在這個例子中,我們將看到如何找到給定數字的最小公倍數。這可以透過使用gcd函式來完成。

import Prelude

lcm :: Integral a => a -> a -> a
lcm a b = (a * b) `div` (gcd a b)

main :: IO ()
main = do
   let a = 4
   let b = 5
   let lcmVal = Prelude.lcm a b
   putStrLn $ "The LCM of " ++ show a ++ " and " ++ show b ++ " is: " ++ show lcmVal

輸出

The LCM of 4 and 5 is: 20

示例2

在這個例子中,我們將看到如何找到給定數字的最小公倍數。這可以透過使用gcd函式和foldl函式來完成。此示例使用foldl函式迭代整數列表,並計算列表中元素的最小公倍數。

import Data.List (foldl')

lcm'' :: Integral a => [a] -> a
lcm'' = foldl' (\x y -> (x*y) `div` (gcd x y)) 1

main :: IO ()
main = do
   let a = 4
   let b = 5
   let lcmVal = Prelude.lcm a b
   putStrLn $ "The LCM of " ++ show a ++ " and " ++ show b ++ " is: " ++ show lcmVal

輸出

The LCM of 4 and 5 is: 20

示例3

在這個例子中,我們將看到如何找到給定數字的最小公倍數。這可以透過使用gcd函式和foldl1函式來完成。此示例使用foldl1函式,該函式使用列表的第一個元素作為初始累加器值,來迭代整數列表,並計算列表中元素的最小公倍數。

import Data.List (foldl1')

lcm''' :: Integral a => [a] -> a
lcm''' = foldl1' (\x y -> (x*y) `div` (gcd x y))

main :: IO ()
main = do
   let a = 4
   let b = 5
   let lcmVal = Prelude.lcm a b
   putStrLn $ "The LCM of " ++ show a ++ " and " ++ show b ++ " is: " ++ show lcmVal

輸出

The LCM of 4 and 5 is: 20

示例4

在這個例子中,我們將看到如何找到給定數字的最小公倍數。這可以透過遞迴使用gcd函式來完成。此示例使用遞迴查詢兩個數字的最大公約數,然後使用公式LCM(a,b) = (a*b)/GCD(a,b)來查詢兩個數字的最小公倍數。

lcm' :: Integral a => a -> a -> a
lcm' a b = (a * b) `div` (gcd' a b)
   where gcd' a 0 = a
         gcd' a b = gcd' b (a `mod` b)

main :: IO ()
main = do
       let a = 4
       let b = 5
       let lcmVal = Prelude.lcm a b
       putStrLn $ "The LCM of " ++ show a ++ " and " ++ show b ++ " is: " ++ show lcmVal

輸出

The LCM of 4 and 5 is: 20

結論

在Haskell中,Prelude庫中沒有內建函式來查詢兩個數字的最小公倍數,但是我們可以使用Prelude庫中的gcd函式來查詢兩個數字的最大公約數,然後用它來查詢最小公倍數。為了找到給定數字的最小公倍數,我們可以使用gcd函式以及Haskell中的foldl或foldl1函式。它也可以透過遞迴使用gcd函式獲得。

更新於:2023年3月13日

91 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始
廣告