算法:寻找自幂数(JS)-水仙花、四叶玫瑰、五角星

寻找自幂数

*打印所有的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位五角星数。

posted @ 2023-10-07 16:11  安知竹墨  阅读(197)  评论(0)    收藏  举报