用for语句编程输出所有的水仙花数,用Python轻松实现所有水仙花数的查找


Python程序实现输出所有的水仙花数

水仙花数也被称为阿姆斯特朗数,是指一个n位正整数,它的每个位上的数字的n次幂之和等于它本身。例如,153是一个3位的水仙花数,因为153=1³ + 5³ + 3³。

python

def find_narcissistic_numbers(n):

初始化一个空列表,用于存储水仙花数

narcissistic_numbers = []

使用for循环遍历从100到1000(或任何你想要的n位数范围)的所有数字

for num in range(100, 10n, 10):

提取数字的每一位

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

计算每一位的n次幂之和

sum_of_powers = sum(xn for x in digits)

如果和等于原数字,那么它是一个水仙花数

if sum_of_powers == num:

narcissistic_numbers.append(num)

返回所有的水仙花数

return narcissistic_numbers

查找3位的水仙花数

three_digit_narcissistic_numbers = find_narcissistic_numbers(3)

输出3位的水仙花数

for num in three_digit_narcissistic_numbers:

print(num)

查找4位的水仙花数

four_digit_narcissistic_numbers = find_narcissistic_numbers(4)

输出4位的水仙花数

for num in four_digit_narcissistic_numbers:

print(num)

这个程序首先定义了一个函数`find_narcissistic_numbers`,它接受一个参数`n`,表示要查找的水仙花数的位数。函数内部使用了一个for循环,遍历从100到10^n的所有数字。对于每个数字,它提取出每一位,计算每一位的n次幂之和,如果和等于原数字,那么它是一个水仙花数,将其添加到列表中。函数返回所有的水仙花数。

在主程序中,我们调用了两次`find_narcissistic_numbers`函数,分别查找3位和4位的水仙花数,并将结果打印出来。

请注意,这个程序的时间复杂度是O(n 10^n),其中n是水仙花数的位数。对于较大的n,程序可能需要很长时间才能运行完成。