水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)阿姆斯壮数、自恋数、自幂数、或阿姆斯特朗数(Armstrong number),水仙花数是指一个 3 位数,它的每个数位上的数字的 3次幂之和等于它本身,是指一个 n 位数(n ≥ 3),它的每个位上的数字的 n 次幂之和恰好等于它本身。例如,153 是一个水仙花数,因为 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153。
以下是 Python 实现水仙花数的原理:
```python def is_armstrong_number(num): # 将数字转换为字符串,以便逐位访问 num_str = str(num) n = len(num_str) # 计算每个位上的数字的 n 次幂之和 sum_of_powers = sum(int(digit) ** n for digit in num_str) # 检查是否为水仙花数 if sum_of_powers == num: return True else: return False
# 示例:查找 3 位数中的水仙花数
for i in range(100, 1000):
if is_armstrong_number(i):
print(i)
```
在这段代码中,`is_armstrong_number` 函数用于检查一个数是否为水仙花数。它首先将输入的数字转换为字符串,然后计算每个位上的数字的 n 次幂之和,最后将结果与原始数字进行比较以确定是否满足水仙花数的条件。
在示例中,我们遍历 3 位数(100 到 999),对每个数调用 `is_armstrong_number` 函数,找到并打印出所有的水仙花数。
这样,你可以使用这段代码来查找任意范围内的水仙花数。