用js写判断其是否是水判断其是否是水仙花数。水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身仙花数。水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身
时间: 2025-06-27 18:03:50 浏览: 11
### 判断水仙花数的 JavaScript 函数
以下是用 JavaScript 实现的一个函数,可以用来判断给定的数字是否为水仙花数。此函数适用于任意位数的整数。
```javascript
function isDaffodilNumber(num) {
if (num <= 0 || !Number.isInteger(num)) return false;
const digits = num.toString().split(''); // 将数字转换成字符数组
const sumOfPowers = digits.reduce((sum, digit) => sum + Math.pow(parseInt(digit), digits.length), 0);
return sumOfPowers === num; // 如果各位数字的 n 次方之和等于原数,则是水仙花数
}
```
上述代码通过 `toString()` 方法将数字转为字符串并分割成单个字符组成的数组[^1]。接着利用 `reduce` 计算每一位数字按其长度次幂后的总和,并最终比较这个总和是否与原始数字相等[^2]。
如果仅需查找三位数范围内的水仙花数,可采用如下循环结构:
```javascript
function findThreeDigitDaffodils() {
const results = [];
for (let i = 100; i < 1000; i++) {
if (isDaffodilNumber(i)) {
results.push(i);
}
}
return results;
}
console.log(findThreeDigitDaffodils());
```
这段程序定义了一个辅助函数 `findThreeDigitDaffodils` 来遍历所有的三位数,并调用前面编写的 `isDaffodilNumber` 进行验证[^3]。
#### 输出结果解释
运行以上脚本会打印出所有符合条件的三位数水仙花数,例如 `[153, 370, 371, 407]`[^4]。
### 使用场景扩展说明
除了简单的判断外,还可以结合模板字符串输出更友好的提示信息[^5]:
```javascript
const numberToCheck = prompt("请输入一个正整数:");
if (isDaffodilNumber(numberToCheck)) {
console.log(`${numberToCheck} 是一个水仙花数`);
} else {
console.log(`${numberToCheck} 不是一个水仙花数`);
}
```
这里使用了浏览器内置的 `prompt` 方法获取用户输入,并借助之前创建的功能完成检测逻辑。
阅读全文
相关推荐

















