水仙花数,是指一个三位数,它的每个位上的数字的立方和等于它本身。比如:153 = 1^3 + 5^3 + 3^3,因此,153就是一个水仙花数。那么,如何输出所有的水仙花数呢?
一、使用循环语句输出
我们可以使用循环语句来判断每个三位数是否为水仙花数。具体步骤如下:
1.使用for循环,从100开始遍历到999;
2.将当前遍历的数分离出个位、十位、百位;
3.判断当前数是否为水仙花数,如果是,输出当前数。
以下是使用Python语言实现的代码:
for i in range(100,1000):
a = i // 100
b = i % 100 // 10
c = i % 10
if i == a**3 + b**3 + c**3:
print(i)
二、使用递归函数输出
除了使用循环语句来输出水仙花数,我们还可以使用递归函数来实现。具体步骤如下:
1.定义一个递归函数,传入当前的三位数;
2.将当前遍历的数分离出个位、十位、百位;
3.判断当前数是否为水仙花数,如果是,输出当前数;
4.递归调用函数,传入下一个三位数。
以下是使用Python语言实现的代码:
def narcissistic(start, end):
if start <= end:
a = start // 100
b = start % 100 // 10
c = start % 10
if start == a**3 + b**3 + c**3:
print(start)
narcissistic(start + 1, end)
narcissistic(100, 999)
三、使用列表推导式输出
除了使用循环语句和递归函数,我们还可以使用列表推导式来输出水仙花数。具体步骤如下:
1.使用列表推导式,遍历所有的三位数;
2.将当前遍历的数分离出个位、十位、百位;
3.判断当前数是否为水仙花数,如果是,将当前数添加到列表中。
以下是使用Python语言实现的代码:
narcissistic_list = [i for i in range(100, 1000) if i == (i // 100)**3 + (i % 100 // 10)**3 + (i % 10)**3]
print(narcissistic_list)
四、总结
以上三种方法,都可以输出所有的水仙花数。使用循环语句比较简单,递归函数可以让代码更加简洁,而列表推导式则可以让代码更加简洁和高效。无论使用哪种方法,我们都可以用较少的代码输出所有的水仙花数。