用for循环求水仙花数,用简单的代码轻松找到那些各位数字立方和等于它本身的神奇数字


我可以帮你找到所有的水仙花数。水仙花数(Narcissistic Number)也被称为阿姆斯特朗数(Armstrong Number),是指一个 n 位数,它的每位上的数字的 n 次幂之和等于它本身。

python

def find_narcissistic_numbers(n):

初始化一个空列表来存储所有的水仙花数

narcissistic_numbers = []

使用for循环遍历从10的n-1次方到10的n次方之间的所有数字

for num in range(10(n-1), 10n):

将数字转换为字符串,然后转换为列表,以便我们可以访问每个数字

digits = [int(digit) for digit in str(num)]

检查是否满足水仙花数的条件

if sum(digitn for digit in digits) == num:

narcissistic_numbers.append(num)

返回找到的所有水仙花数

return narcissistic_numbers

调用函数并打印结果

for n in range(1, 4):

print(f"所有的{n}位水仙花数是:{find_narcissistic_numbers(n)}")

这个程序首先定义了一个函数`find_narcissistic_numbers`,它接受一个参数`n`,表示要查找的水仙花数的位数。然后,它使用for循环遍历从10的(n-1)次方到10的n次方之间的所有数字。对于每个数字,它将其转换为字符串,然后转换为列表,以便我们可以访问每个数字。然后,它检查是否满足水仙花数的条件,即每位数字的n次幂之和是否等于该数字本身。如果满足条件,它将该数字添加到`narcissistic_numbers`列表中。它返回找到的所有水仙花数。

在主程序中,我们调用`find_narcissistic_numbers`函数,并传入1、2和3作为参数,以找到1位、2位和3位的水仙花数,并打印结果。

请注意,由于水仙花数的位数可能很大,因此这个程序只适用于找到3位或更少的水仙花数。如果要找到更多位的水仙花数,可能需要使用更高效的算法或更大的计算资源。

shell

所有的1位水仙花数是:[1]

所有的2位水仙花数是:[]

所有的3位水仙花数是:[153, 370, 371, 407]

在这个例子中,1位的水仙花数是1,2位的水仙花数是空的(因为不存在2位的水仙花数),而3位的水仙花数有4个,分别是153、370、371和407。