java中水仙花数的代码怎么写(javascript 水仙花)

1年前 (2023-09-06)阅读84回复0
周达生
周达生
  • 注册排名10013
  • 经验值0
  • 级别
  • 主题0
  • 回复0
楼主

Javascript中的水仙花问题是广受程序员喜爱的一个经典算法问题。所谓水仙花数,指的是一个三位数的各位数字立方和等于本身的数字。例如,153就是一个水仙花数,因为 1^3 + 5^3 + 3^3 = 153。JavaScript中,实现水仙花问题并不难,可以用for循环和if语句实现。

function narcissisticNumber() {
for(let i = 100; i<= 999; i++) {
let firstDigit = Math.floor(i / 100);
let secondDigit = Math.floor(i / 10) % 10;
let thirdDigit = i % 10;
if(Math.pow(firstDigit, 3) + Math.pow(secondDigit, 3) + Math.pow(thirdDigit, 3) === i) {
console.log(i);
}
}
}
narcissisticNumber();

在上述代码中,我们通过一个for循环遍历了100到999之间所有的三位数。对于每个数,我们分别计算了它的个位、十位和百位上的数字,然后通过if语句判断它是否是一个水仙花数。如果是,我们就将它输出到控制台上。

为了让算法更加高效,我们也可以使用字符串来处理每个三位数的各位数字。下面是另一个实现方式:

function narcissisticNumber() {
for(let i = 100; i<= 999; i++) {
let numberString = i.toString();
let numDigits = numberString.length;
let sum = 0;
for(let j = 0; j< numDigits; j++) {
let digit = parseInt(numberString.charAt(j));
sum += Math.pow(digit, numDigits);
}
if(sum === i) {
console.log(i);
}
}
}
narcissisticNumber();

在这个版本的代码中,我们将每个三位数转换为字符串,然后通过charAt()方法来获取每个位上的数字。通过使用一个内部的循环遍历所有数字,我们计算了数字的立方和。如果这个和等于原始的数字本身,我们就将其输出到控制台上。

JavaScript中的水仙花问题表明了对于一个在数学上挑战性不大的问题,我们可以有多种不同的方式来实现它。无论是使用整数型数组来处理数字的各位,还是使用字符串动态获取数字,都可以获得同样准确的结果。

本文可能转载于网络公开资源,如果侵犯您的权益,请联系我们删除。

本文地址:https://www.pyask.cn/info/1394.html

0
回帖

java中水仙花数的代码怎么写(javascript 水仙花) 期待您的回复!

取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息