用python求水仙花数

甜岛和星

水仙花数,又称为自恋数、自幂数、阿姆斯特朗数,它指的是一个n位正整数,其各位数字的n次幂之和等于该数本身。例如:(153 = 1^3 + 5^3 + 3^3)。

在Python中,我们可以编写一个程序来找出所有的水仙花数。下面是一个简单的实现方法:

def is_narcissistic_number(num):
    # 将数字转换为字符串,以便遍历每一位数字
    digits = str(num)
    # 计算各位数字的n次幂之和
    sum_of_powers = sum(int(digit) ** len(digits) for digit in digits)
    # 判断是否为水仙花数
    return sum_of_powers == num

def find_narcissistic_numbers(start, end):
    # 遍历指定范围内的所有数字,并筛选出水仙花数
    return [num for num in range(start, end + 1) if is_narcissistic_number(num)]

# 假设我们想找出三位数的水仙花数
three_digit_narcissistic_numbers = find_narcissistic_numbers(100, 999)
print("三位数的水仙花数有:", three_digit_narcissistic_numbers)

这段代码首先定义了一个函数is_narcissistic_number,用于判断一个数是否为水仙花数。它将输入的数字转换为字符串,然后计算每一位数字的n次幂之和,最后判断这个和是否等于原始数字。

接下来,定义了find_narcissistic_numbers函数,它接受一个范围作为参数,并返回该范围内所有的水仙花数。这个函数使用了列表推导式来简化代码,并通过调用is_narcissistic_number函数来检查每个数字。

最后,我们调用find_narcissistic_numbers函数并传入100到999作为参数,这样就可以找到所有的三位数水仙花数,并打印出来。

除了三位数,我们也可以寻找其他位数的水仙花数,只需调整函数的参数即可。例如,如果我们想找到四位数的水仙花数,可以将参数调整为1000到9999。

水仙花数是一个有趣的数学现象,通过编写程序来寻找它们,不仅可以锻炼编程技能,还能加深对数学规律的理解。Python作为一种强大的编程语言,为实现这类数学问题的解决方案提供了便利。

版权声明:本页面内容旨在传播知识,为用户自行发布,若有侵权等问题请及时与本网联系,我们将第一时间处理。E-mail:284563525@qq.com

目录[+]

取消
微信二维码
微信二维码
支付宝二维码