水仙花数(Narcissistic number)也被称为阿姆斯特朗数(Armstrong number)或自恋数等,它是一个非负整数,其特性是该数的每个位上的数字的n次幂之和等于它本身,其中n是该数的位数。简单来说,如果一个n位数的每个位上的数字都被提升到n次幂,并且这些幂的和等于原始数,那么这个数就是一个水仙花数。
定义
例如,153是一个3位数的水仙花数,因为1^3 + 5^3 + 3^3 = 153,在这个例子中,每个数字(1、5和3)都被提升到3次幂(因为153是3位数),然后这些幂的值被加起来,结果等于原始数153。
代码案例
例如:1^3 + 5^3+ 3^3 = 153,所以153是一个水仙花数。以下是一个Python程序,用于查找并打印指定范围内的所有水仙花数,代码如下所示:
def find_narcissistic_numbers(lower_limit, upper_limit):
narcissistic_numbers = []
for num in range(lower_limit, upper_limit + 1):
# 计算数字的位数
num_str = str(num)
num_digits = len(num_str)
# 计算每个位上的数字的n次幂之和
sum_of_powers = 0
for digit in num_str:
sum_of_powers += int(digit) ** num_digits
# 判断是否为水仙花数
if sum_of_powers == num:
narcissistic_numbers.append(num)
return narcissistic_numbers
# 测试函数
lower_limit = 100
upper_limit = 9999
print(find_narcissistic_numbers(lower_limit, upper_limit))