当前位置: 面试刷题>> 水仙花数 (经典算法题500道)


题目描述补充

题目:水仙花数(Narcissistic Number)识别

水仙花数也被称为阿姆斯特朗数(Armstrong number),它是一个n位数,它的每个位上的数字的n次幂之和等于它本身。例如:

  • 1^3 + 5^3 + 3^3 = 153,所以153是一个水仙花数。
  • 3^7 + 7^7 + 4^7 = 374,所以374也是一个水仙花数(虽然这个例子并不真实,因为374不是水仙花数,这里仅作示例格式说明)。

你的任务是编写一个程序,能够识别并打印出给定范围内(比如100到999之间,因为三位数的水仙花数最常见)的所有水仙花数。

PHP 代码示例

<?php
function isNarcissistic($num) {
    $length = strlen($num);
    $sum = 0;
    $temp = $num;
    
    while ($temp > 0) {
        $digit = $temp % 10;
        $sum += pow($digit, $length);
        $temp = (int)($temp / 10);
    }
    
    return $sum == $num;
}

// 查找100到999之间的所有水仙花数
for ($i = 100; $i < 1000; $i++) {
    if (isNarcissistic($i)) {
        echo $i . " ";
    }
}
?>

Python 代码示例

def is_narcissistic(num):
    return num == sum(int(digit) ** len(str(num)) for digit in str(num))

# 查找100到999之间的所有水仙花数
for num in range(100, 1000):
    if is_narcissistic(num):
        print(num, end=' ')

JavaScript 代码示例

function isNarcissistic(num) {
    let sum = 0;
    let numStr = num.toString();
    let length = numStr.length;
    
    for (let i = 0; i < length; i++) {
        let digit = parseInt(numStr[i]);
        sum += Math.pow(digit, length);
    }
    
    return sum === num;
}

// 查找100到999之间的所有水仙花数
for (let i = 100; i < 1000; i++) {
    if (isNarcissistic(i)) {
        console.log(i);
    }
}

码小课:以上代码示例展示了如何在PHP、Python和JavaScript中查找和打印指定范围内的水仙花数。这些代码示例可以作为算法和编程基础练习的一部分,帮助大家更好地理解数字操作和循环控制结构。在码小课网站上,有更多相关内容分享给大家学习,包括但不限于算法题解、编程语言教程和编程技巧分享。

推荐面试题