用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,程序可能需要很长时间才能运行完成。

