Haskell程序 检查阿姆斯特朗数

Haskell程序 检查阿姆斯特朗数

在Haskell中,我们可以使用列表推导和sum函数来检查给定的数字是否是阿姆斯特朗数。阿姆斯特朗数,也称为自恋数,是这样一些数字,它们的每个数字的立方和与该数字本身相等。

例如,数字153是一个阿姆斯特朗数,因为1^3 + 5^3 + 3^3 = 153。

算法

  • 步骤1 - armstrong函数使用列表推导和sum函数计算n的数字的立方和,并定义。

  • 步骤2 - 程序的执行将从main函数开始。main()函数具有整个程序的控制权。它被编写为main = do. main函数从用户输入并将其传递给armstrong函数以检查是否为阿姆斯特朗数。如果是,则显示消息“It是阿姆斯特朗数。”,否则显示“它不是阿姆斯特朗数。”。

  • 步骤3 - 名为“num”的变量正在初始化。它将保存要检查是否为阿姆斯特朗数的数字。

  • 步骤4 - 在调用函数后,使用‘putStrLn’语句将结果打印到控制台。

示例1

在此示例中,armstrong函数将整数n作为输入,并在它是阿姆斯特朗数时返回True,否则返回False。

armstrong函数使用列表推导和sum函数计算n的数字的立方和。

    armstrong :: Int -> Bool
    armstrong n = sum [x^length (show n) | x <- (map (\x -> read [x]) (show n))] == n

    main :: IO ()
    main = do
       let num = 153
       if armstrong num
          then putStrLn "It is an Armstrong number."
          else putStrLn "It is not an Armstrong number."

输出

    It is an Armstrong number.

示例2

在此示例中,使用sum和digitToInt函数定义了函数armstrong以检查传递的数字是否为阿姆斯特朗数。

    import Data.Char

    armstrong :: Int -> Bool
    armstrong n = n == sum [digitToInt x ^ length (show n) | x <- show n]

    main :: IO ()
    main = do
       let num = 153
       if armstrong num
          then putStrLn "It is an Armstrong number."
          else putStrLn "It is not an Armstrong number."

输出

    It is an Armstrong number.

示例3

在此示例中,armstrong函数将整数n作为输入,并在它是阿姆斯特朗数时返回True,否则返回False。

armstrong函数使用列表推导和sum函数计算n的数字的立方和。

    armstrong :: Int -> Bool
    armstrong n = n == sum [x^d | x <- digits n, let d = numberOfDigits n]
       where
          digits n = map (\x -> read [x]) (show n)
          numberOfDigits n = length (show n)

    main :: IO ()
    main = do
       let num = 153
       if armstrong num
          then putStrLn "It is an Armstrong number."
          else putStrLn "It is not an Armstrong number."

输出

    It is an Armstrong number.

结论

在Haskell中,我们可以使用函数,如show,map,read,length和sum,编写一个程序来检查给定的数字是否为阿姆斯特朗数。基本思想是将数字转换为字符串,然后将字符串中的每个字符再次转换为整数,最后计算数字的立方和。如果总和等于原始数字,则为阿姆斯特朗数,否则不是。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程