优草派  >   Python

输出所有的水仙花数

优草君            来源:优草派

水仙花数,是指一个三位数,它的每个位上的数字的立方和等于它本身。比如: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)

四、总结

以上三种方法,都可以输出所有的水仙花数。使用循环语句比较简单,递归函数可以让代码更加简洁,而列表推导式则可以让代码更加简洁和高效。无论使用哪种方法,我们都可以用较少的代码输出所有的水仙花数。

【原创声明】凡注明“来源:优草派”的文章,系本站原创,任何单位或个人未经本站书面授权不得转载、链接、转贴或以其他方式复制发表。否则,本站将依法追究其法律责任。
TOP 10
  • 周排行
  • 月排行