编写scala程序,采用函数或方法的方式,分别输出100~999,1000~9999的所有水仙花数
时间: 2024-09-20 10:11:30 浏览: 8
水仙花数是一种特殊的数字,它的各位数字立方之和等于它本身。例如,153是一个水仙花数,因为1^3 + 5^3 + 3^3 = 153。在Scala中,我们可以编写函数来找出指定范围内的水仙花数。这里我会提供两个函数,一个用于检查单个数字是否是水仙花数,另一个用于生成并输出范围内的所有水仙花数。
首先,我们定义一个名为`isArmstrongNumber`的函数,判断给定的整数是否为水仙花数:
```scala
def isArmstrongNumber(num: Int): Boolean = {
val digits = num.toString.map(_.asDigit).toList
val sumOfCubes = digits.map(_ * _ * _).sum
sumOfCubes == num
}
```
接下来,创建一个名为`findAndPrintArmstrongNumbersInRange`的函数,用于查找并打印指定范围内的水仙花数:
```scala
def findAndPrintArmstrongNumbers(start: Int, end: Int): Unit = {
for (i <- start to end) {
if (isArmstrongNumber(i)) {
println(s"$i 是一个水仙花数")
}
}
}
```
现在,我们可以调用这个函数来找到并打印100到999和1000到9999之间的水仙花数:
```scala
findAndPrintArmstrongNumbers(100, 999)
findAndPrintArmstrongNumbers(1000, 9999)
```