Python编程新技能:如何优雅地实现水仙花数?

Python编程新技能:如何优雅地实现水仙花数?_第1张图片

水仙花数(Narcissistic number)也被称为阿姆斯特朗数(Armstrong number)或自恋数等,它是一个非负整数,其特性是该数的每个位上的数字的n次幂之和等于它本身,其中n是该数的位数。简单来说,如果一个n位数的每个位上的数字都被提升到n次幂,并且这些幂的和等于原始数,那么这个数就是一个水仙花数。

定义

Python编程新技能:如何优雅地实现水仙花数?_第2张图片
例如,153是一个3位数的水仙花数,因为1^3 + 5^3 + 3^3 = 153,在这个例子中,每个数字(1、5和3)都被提升到3次幂(因为153是3位数),然后这些幂的值被加起来,结果等于原始数153。

代码案例

Python编程新技能:如何优雅地实现水仙花数?_第3张图片

例如: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))

你可能感兴趣的:(python,开发语言)