使用js写一个方法找出所有的"水仙花数"

水仙花数(Narcissistic Number)也被称为阿姆斯特朗数(Armstrong Number),它是一个n位数,其每一位数字的n次方之和等于它本身。例如,153是一个3位数的水仙花数,因为 1^3 + 5^3 + 3^3 = 153。

以下是一个使用JavaScript编写的方法,用于找出所有的三位水仙花数:

function findNarcissisticNumbers() {
    const results = [];
    for (let i = 100; i < 1000; i++) {
        const digits = i.toString().split('').map(Number);
        const sum = digits.reduce((acc, val) => acc + Math.pow(val, 3), 0);
        if (sum === i) {
            results.push(i);
        }
    }
    return results;
}

console.log(findNarcissisticNumbers()); // 输出所有的三位水仙花数

如果你想要找出所有n位的水仙花数,你可以稍微修改一下上面的函数,使其接受一个参数n,表示要找的水仙花数的位数:

function findNarcissisticNumbers(n) {
    const results = [];
    const min = Math.pow(10, n - 1);
    const max = Math.pow(10, n);
    for (let i = min; i < max; i++) {
        const digits = i.toString().split('').map(Number);
        const sum = digits.reduce((acc, val) => acc + Math.pow(val, n), 0);
        if (sum === i) {
            results.push(i);
        }
    }
    return results;
}

console.log(findNarcissisticNumbers(3)); // 输出所有的三位水仙花数
console.log(findNarcissisticNumbers(4)); // 输出所有的四位水仙花数
// 你可以继续尝试其他位数的水仙花数
posted @ 2024-12-28 09:00  王铁柱6  阅读(60)  评论(0)    收藏  举报