编写scala程序,采用函数或方法的方式,分别输出100~999,1000~9999的所有水仙花数。
时间: 2024-09-20 21:16:12 浏览: 52
在Scala中,编写一个函数或方法来找出指定范围内的水仙花数(也称为 narcissistic number,即其各位数字立方和等于它本身),可以分为两部分:首先定义一个检查数字是否是水仙花的函数,然后遍历两个给定的范围并应用该函数。
以下是使用函数和方法实现的示例:
```scala
object NarcissisticNumbers {
// 函数:检查一个数字是否是水仙花数
def isNarcissistic(num: Int): Boolean = {
val digits = num.toString.map(_.asDigit).toList
val sumOfCubes = digits.map(_ * _ * _).sum == num
sumOfCubes
}
// 方法1:输出100到999之间的水仙花数
def printNarcissistic1(start: Int, end: Int): Unit = {
for (num <- start to end) {
if (isNarcissistic(num)) println(num)
}
}
// 方法2:输出1000到9999之间的水仙花数
def printNarcissistic2(start: Int, end: Int): Unit = {
for (num <- start to end by 1000) {
if (isNarcissistic(num)) println(num)
}
}
// 主入口
def main(args: Array[String]): Unit = {
printNarcissistic1(100, 999)
println("\n1000至9999之间的水仙花数:")
printNarcissistic2(1000, 9999)
}
}
```
在这个例子中,`isNarcissistic`函数接收一个整数,计算它的各个位上的数字立方之和,并检查结果是否与原数字相等。`printNarcissistic1`和`printNarcissistic2`方法则遍历相应的范围,如果找到水仙花数就打印出来。
阅读全文