水仙花数(Narcissistic number),也被称为阿姆斯特朗数(Armstrong number),是一个特殊的数字。具体来说,它是一个n位数,其中每个位上的数字的n次幂之和等于该数本身。例如,153是一个三位的水仙花数,因为1^3 + 5^3 + 3^3 = 153。
在Python中,你可以通过以下步骤来检测一个数是否是水仙花数:
1. 将数字转换为字符串,以便于拆分各个位上的数字。
2. 遍历每个数字,计算其n次幂(其中n是数字的位数)。
3. 将所有位上的数字的n次幂相加。
4. 比较这个和是否等于原始数字。
下面是一个简单的Python函数,用于检测一个数是否是水仙花数:
def is_narcissistic_number(num):
将数字转换为字符串,并拆分成单个数字的列表
digits = [int(d) for d in str(num)]
计算数字的位数
n = len(digits)
计算各位数字的n次幂之和
sum_of_powers = sum(d n for d in digits)
比较和是否等于原始数字
return sum_of_powers == num
使用这个函数,你可以检测任何你想要检测的数字是否是水仙花数。例如:
测试函数
print(is_narcissistic_number(153)) 输出:True
print(is_narcissistic_number(370)) 输出:True
print(is_narcissistic_number(371)) 输出:True
print(is_narcissistic_number(407)) 输出:True
print(is_narcissistic_number(1634)) 输出:False
这个函数可以检测任意位数的水仙花数,只要输入的数字位数大于等于3。如果你想检测特定范围内的水仙花数,可以修改函数中的参数。例如,要检测100到1000之间的水仙花数,可以这样做:
for num in range(100, 1000):
if is_narcissistic_number(num):
print(num)
这将打印出100到1000之间的所有水仙花数