Python 实现水仙花数
水仙花数的定义
水仙花数是指一个 n 位数(n>=3),它的每个位上的数字的 n 次幂之和等于它本身。例如,153 是一个水仙花数,因为 1^3 + 5^3 + 3^3 = 153。
水仙花数的特点
- 水仙花数是自恋数:将一个水仙花数的每个位数的数字的 n 次幂之和再次计算,结果仍然是它本身。
-
水仙花数是非常稀少的,根据数学研究,3 位数的水仙花数只有 4 个,4 位数的水仙花数没有,5 位数的水仙花数只有 3 个,6 位数的水仙花数没有,以此类推。因此,水仙花数是一种特殊的数字。
实现思路
我们可以使用循环和条件判断来判断一个数是否为水仙花数。具体实现步骤如下:
- 获取用户输入的数字,判断输入的数字是否是一个合法的 n 位数。
-
遍历从 1 到输入的数字之间的所有数,判断每个数是否是水仙花数。
-
对于每个数,将其每个位数的数字的 n 次幂相加,判断结果是否等于该数。
-
如果结果等于该数,则将该数输出。否则,继续判断下一个数。
代码实现
def is_narcissistic_number(num):
# 计算数的位数
digits = len(str(num))
# 对每个位数的数字进行计算
total = 0
temp = num
while temp > 0:
digit = temp % 10
total += digit ** digits
temp = temp // 10
# 判断结果是否等于数本身
if total == num:
return True
else:
return False
def print_narcissistic_numbers(n):
count = 0
for num in range(10**(n-1), 10**n):
if is_narcissistic_number(num):
print(num)
count += 1
if count == 0:
print("在范围内找不到水仙花数")
# 测试
print_narcissistic_numbers(3)
运行结果
上述代码可以输出所有 3 位数的水仙花数,其结果如下:
153
370
371
407
总结
水仙花数是一类特殊的数字,它的每个位数的数字的 n 次幂之和等于它本身。本文介绍了如何使用 Python 实现水仙花数的判断和输出。希望读者通过阅读本文,对水仙花数有更深入的了解,并能够灵活运用 Python 编程进行水仙花数的计算。