Haskell 程序显示数字的因子


在 Haskell 中,我们可以使用列表推导式、filter 函数和递归来显示数字的因子。在第一个示例中,我们将使用 (factors n = [x | x <- [1..n], n `mod` x == 0]) 作为列表推导式,在第二个示例中,我们将使用 (filter (\x -> n `mod` x == 0) [1..n]) 函数。在第三个示例中,我们将使用带有基本情况和递归情况的递归。

算法

  • 步骤 1 − 使用内部函数定义用户定义的 factors 函数。

  • 步骤 2 − 程序执行将从 main 函数开始。main() 函数控制整个程序。它被写成 main = do。

  • 步骤 3 − 初始化名为“num”的变量。它将保存要打印所有因子的数字。

  • 步骤 4 − 使用 'print' 函数在函数调用后将给定数字的所得因子打印到控制台。

示例 1

在这个例子中,我们将了解如何使用列表推导式显示数字的所有因子。

factors :: Integer -> [Integer]
factors n = [x | x <- [1..n], n `mod` x == 0]

main :: IO ()
main = do
   let num = 24
   print (factors num)

输出

[1,2,3,4,6,8,12,24]

示例 2

在这个例子中,我们将了解如何使用 filter 函数显示数字的所有因子。

factors :: Integer -> [Integer]
factors n = filter (\x -> n `mod` x == 0) [1..n]

main :: IO ()
main = do
   let num = 24
   print (factors num)

输出

[1,2,3,4,6,8,12,24]

示例 3

在这个例子中,我们将了解如何使用递归显示数字的所有因子。

factors :: Integer -> [Integer]
factors n = factors' n 1

factors' :: Integer -> Integer -> [Integer]
factors' n i
   | i > n = []
   | n `mod` i == 0 = i : factors' n (i+1)
   | otherwise = factors' n (i+1)

main :: IO ()
main = do
   let num = 24
   print (factors num)

输出

[1,2,3,4,6,8,12,24]

结论

在 Haskell 中,可以使用列表推导式、filter 函数或递归将数字的因子显示到控制台。

更新于: 2023年3月13日

528 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告