优草派 > 问答 > Python

编程求出水仙花数

作者:jczds100     

水仙花数是一个十分有趣的数学概念,它是指一个n位数(n>=3),它的每个位上的数字的n次幂之和等于它本身。例如,153是一个水仙花数,因为1^3+5^3+3^3=153。本文将从多个角度分析如何用编程来求出水仙花数。

首先,我们可以使用循环来求出水仙花数。假设我们要求3位数的水仙花数,那么我们可以从100开始循环到999,对于每一个数,我们可以将它的每个位上的数字的三次幂相加,如果等于它本身,那么就是一个水仙花数。代码如下:

```

for i in range(100, 1000):

a = i // 100 # 百位数

b = (i // 10) % 10 # 十位数

c = i % 10 # 个位数

if a**3 + b**3 + c**3 == i:

print(i)

```

这段代码中,我们使用了Python的range函数来生成从100到999的数,然后通过整除和取余来获取每个数的百位数、十位数和个位数。最后,我们判断它们的三次幂之和是否等于这个数本身,如果是,就输出这个数。

除了使用循环外,我们还可以使用递归来求出水仙花数。递归是一种函数调用自身的技术,在这里,我们可以定义一个函数来判断一个数是否是水仙花数,如果是,就输出这个数,否则,就递归地调用这个函数。代码如下:

```

def narcissistic_number(n):

if n < 100 or n > 999:

return

a = n // 100 # 百位数

b = (n // 10) % 10 # 十位数

c = n % 10 # 个位数

if a**3 + b**3 + c**3 == n:

print(n)

narcissistic_number(n+1)

narcissistic_number(100)

```

这段代码中,我们定义了一个名为`narcissistic_number`的函数,它接受一个参数n,表示要判断的数。在函数内部,我们首先判断n是否是一个三位数,如果不是,就直接返回。然后,我们通过整除和取余来获取n的百位数、十位数和个位数,判断它们的三次幂之和是否等于n,如果是,就输出n。最后,我们递归地调用`narcissistic_number`函数,并传入参数n+1,继续判断下一个数是否是水仙花数。

除了使用循环和递归外,我们还可以使用列表推导式来求出水仙花数。列表推导式是Python中非常强大的一种语法,它可以通过一行代码生成一个列表。在这里,我们可以使用列表推导式来生成所有的三位数,然后通过判断它们是否是水仙花数来筛选出水仙花数。代码如下:

```

narcissistic_numbers = [i for i in range(100, 1000) if (i//100)**3 + ((i//10)%10)**3 + (i%10)**3 == i]

print(narcissistic_numbers)

```

这段代码中,我们使用了列表推导式来生成所有的三位数,然后使用if语句来筛选出水仙花数。最后,我们将水仙花数存储在名为`narcissistic_numbers`的列表中,并输出这个列表。

综上所述,我们可以使用循环、递归和列表推导式来求出水仙花数。无论是哪种方法,都可以帮助我们更好地理解水仙花数的概念,并提高我们的编程能力。

5天短视频训练营
新手入门剪辑课程,零基础也能学
分享变现渠道,助你兼职赚钱
限时特惠:0元
立即抢
新手剪辑课程 (精心挑选,简单易学)
第一课
新手如何学剪辑视频? 开始学习
第二课
短视频剪辑培训班速成是真的吗? 开始学习
第三课
不需要付费的视频剪辑软件有哪些? 开始学习
第四课
手机剪辑app哪个好? 开始学习
第五课
如何做短视频剪辑赚钱? 开始学习
第六课
视频剪辑接单网站APP有哪些? 开始学习
第七课
哪里可以学短视频运营? 开始学习
第八课
做短视频运营需要会什么? 开始学习
相关问题
sql判断字段是否存在
python键值对
for循环可以遍历字典吗
怎么使用vscode
查看更多

客服热线:0731-85127885

湘ICP备19005950号-1  

工商营业执照信息

违法和不良信息举报

举报电话:0731-85127885 举报邮箱:tousu@csai.cn

优草派  版权所有 © 2024