寻找自幂数
*打印所有的3位自幂数,即水仙花数; *打印所有的4位自幂数,即四叶玫瑰数; *打印所有的5位自幂数,即五角星数; 提示1:自幂数是指一个n位数,他的每个位上的数字的n次幂之和等于它本身; 提示2:153是一个水仙花数,是因为 153 = 1^3 + 5^3 + 3^3。1 function findHarmonicNumbers(start, end, n) { 2 let result = []; // 创建一个空数组用于存储结果 3 for (let i = start; i <= end; i++) { 4 let sum = 0; // 初始化求和变量为0 5 let num = i; // 将当前迭代的数赋值给变量num 6 while (num > 0) { // 当num大于0时执行循环 7 let digit = num % 10; // 取num的个位数(余数) 8 sum += Math.pow(digit, n); // 将个位数的n次方加到sum上 9 num = Math.floor(num / 10); // 将num除以10向下取整,相当于去掉个位数 10 } 11 if (sum === i) { // 如果sum等于原来的数i,则说明满足条件 12 result.push(i); // 将满足条件的数添加到结果数组中 13 } 14 } 15 return result; // 返回结果数组 16 } 17 18 // 打印 3 位水仙花数 19 console.log(findHarmonicNumbers(100, 999, 3)); 20 21 // 打印 4 位四叶玫瑰数 22 console.log(findHarmonicNumbers(1000, 9999, 4)); 23 24 // 打印 5 位五角星数 25 console.log(findHarmonicNumbers(10000, 99999, 5));
代码解释:
代码注释解释了函数的功能和逻辑。首先,定义了一个名为findHarmonicNumbers
的函数,该函数接收三个参数:起始数start
、结束数end
和指数n
。函数内部创建一个空数组result
用于存储结果。然后,使用for
循环从起始数start
迭代到结束数end
,在每次迭代中,对当前数i
进行水仙花数、四叶玫瑰数或五角星数的判断。使用while
循环依次取出i
的每一位数字,并将其的n次方加到sum
上。最后判断sum
是否等于原来的数i
,如果满足条件,则将i
添加到结果数组result
中。最后,通过console.log
打印输出三种特殊数的结果,分别为3位水仙花数、4位四叶玫瑰数和5位五角星数。