通过 Scala 的函数式特性与 Spark 的分布式计算能力,水仙花数的计算不仅可作为算法练习案例,还可扩展至大数据处理场景。
递归求和函数 sum :计算从 1 到 n 的累加和。
水仙花数判断函数 isShuiXianHuaShu :判断输入的整数是否为水仙花数(三位数)。
三位数水仙花数需满足:
a^3 + b^3 + c^3 = 100a + 10b + c
例如遍历与分解:通过循环遍历目标范围内的数,分解各位数字并计算幂次和。
// 递归求和函数(1+2+...+n)
def sum(num: Int): Int = {
if (num <= 1) num
else num + sum(num - 1)
}
// 判断三位数是否为水仙花数
def isShuiXianHuaShu(num: Int): Unit = {
val a = num / 100 // 百位
val b = (num % 100) / 10 // 十位
val c = num % 10 // 个位
if (a * a * a + b * b * b + c * c * c == num) {
println(s"$num 是水仙花数")
} else {
println(s"$num 不是水仙花数")
}
}
// 测试代码
println(sum(10)) // 输出 55
isShuiXianHuaShu(123) // 输出 "123 不是水仙花数"
isShuiXianHuaShu(153) // 输出 "153 是水仙花数"