scala编写水仙花数
时间: 2023-07-28 10:10:32 浏览: 174
下面是使用 Scala 编写的水仙花数程序:
```scalaobject NarcissisticNumber {
def main(args: Array[String]): Unit = {
val n = 3 // 水仙花数的位数
(i <- math.pow(, n - 1).toInt until math.pow(, n).toInt) {
val sum = i.toString.map(c => math.pow(c.asDigit, n).toInt).sum
if (sum == i) println(i)
}
}
}
```
在这个程序中,我们使用了 Scala 的 map、sum 等函数式编程特性,将水仙花数的计算过程写得更加简洁和优雅。值得注意的是,我们使用了 `math.pow` 函数来计算数字的幂次方,以及 `c.asDigit` 来将字符转换为数字。
相关问题
编写scala程序,计算100~999的所有水仙花数
### 回答1:
我们可以使用scala编写以下程序来计算100~999之间的所有水仙花数:object Demo {
def main(args: Array[String]) {
for (i <- 100 to 999) {
val s = i.toString
val a = s.charAt(0).asDigit
val b = s.charAt(1).asDigit
val c = s.charAt(2).asDigit
if (i == a * a * a + b * b * b + c * c * c) {
println("水仙花数:" + i)
}
}
}
}
### 回答2:
水仙花数指的是一个数的每个位上的数字的立方和等于该数本身的整数。比如,153是一个水仙花数,因为 1^3 + 5^3 + 3^3 = 153。
以下是用Scala编写的程序,用于计算100到999之间的所有水仙花数:
```scala
object NarcissisticNumbers {
def main(args: Array[String]): Unit = {
println("100到999之间的水仙花数有:")
for (num <- 100 to 999) {
if (isNarcissistic(num)) {
println(num)
}
}
}
def isNarcissistic(num: Int): Boolean = {
val digit1 = num / 100
val digit2 = (num / 10) % 10
val digit3 = num % 10
val sum = math.pow(digit1, 3) + math.pow(digit2, 3) + math.pow(digit3, 3)
num == sum.toInt
}
}
```
这个程序首先定义了一个`isNarcissistic`方法,用于判断一个数是否是水仙花数。该方法首先将给定的数分解为三个位上的数字,然后计算每个位上数字的立方和,并将其与原始数进行比较。如果它们相等,则数是水仙花数。
在`main`方法中,程序使用`for`循环遍历100到999之间的所有数,并调用`isNarcissistic`方法来判断每个数是否是水仙花数。如果是,就打印该数。
运行此程序,将输出100到999之间的所有水仙花数。
注意:此程序仅计算了整数形式的水仙花数,即三位数。如果想要计算更高位数的水仙花数,需要相应地修改代码。
### 回答3:
水仙花数是指一个三位数,其各位数字的立方和等于该数本身。下面是用 Scala 编写的程序,可以计算出 100~999 的所有水仙花数。
```scala
object NarcissisticNumber {
def main(args: Array[String]): Unit = {
for (num <- 100 to 999) {
val digit1 = num / 100
val digit2 = (num % 100) / 10
val digit3 = num % 10
if (digit1 * digit1 * digit1 + digit2 * digit2 * digit2 + digit3 * digit3 * digit3 == num) {
println(num)
}
}
}
}
```
程序中使用了一个 for 循环,遍历所有的三位数。然后,我们取出每个数字的个位、十位和百位,分别存储在 digit1、digit2 和 digit3 变量中。接下来,通过计算每个数字的立方和,判断是否等于原始的数字。如果等于,那么就打印出该数字,即为水仙花数。
运行程序,会输出结果:
153
370
371
407
这些数就是 100~999 之间的所有水仙花数。
编写Scala程序,计算100到999的所有水仙花数
水仙花数是指一个三位数,其各位数字立方和等于该数本身。我们可以使用循环来遍历100到999之间的所有数字,然后判断它是否为水仙花数。
以下是Scala程序示例:
```scala
object NarcissisticNumbers {
def main(args: Array[String]): Unit = {
for (num <- 100 to 999) {
val digit1 = num / 100
val digit2 = (num % 100) / 10
val digit3 = num % 10
if (num == digit1*digit1*digit1 + digit2*digit2*digit2 + digit3*digit3*digit3)
println(num)
}
}
}
```
首先,我们使用for循环遍历100到999之间的所有数字。对于每个数字,我们使用整数除法和模运算获取其百位数、十位数和个位数。然后,我们计算该数字的各位数字立方和,如果等于该数字本身,则输出该数字。
阅读全文