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中的水仙花问题表明了对于一个在数学上挑战性不大的问题,我们可以有多种不同的方式来实现它。无论是使用整数型数组来处理数字的各位,还是使用字符串动态获取数字,都可以获得同样准确的结果。
本文可能转载于网络公开资源,如果侵犯您的权益,请联系我们删除。
0