水仙花数简介
水仙花数(Narcissistic ma.ltyppp.cn number)是指一个n位数 (n≥3),它的每个位上的数字的n次幂之和等于它自身。举例153便是一个水仙花数,因为153=1^3+5^3+3^3。水仙花数是自恋数( ma.2s3i3ps.cn Self number)的一种,是数字筹算中的一种道理风物。
解法一:暴力排列
咱们不错从100运行,一直排列到999,判断每个数是否为水仙花数。具体完了历程如下:
for i ma.baicat1y.cn in range(100, 1000):
a = i // 100 # 取百位数
b = i // 10 % 10 # 取十位数
伸开剩余67%c = i % 10 # 取个位数
最新国产相关2018在线视频if i == a ** 3 + b ** 3 + c ** 3:
print(i)
这种看成天然节略径直,然而成果较低,因为需要排列通盘的三位数。
解法二:数学优化
咱们不错把柄水仙花数的界说,对数学公式进行优化,减少筹算量。具体来说,关于一个三位数abc,它的诸君数字的立方和为$a^3+b^3+c^3$,咱们不错径直欺诈幂运算进行筹算,而无用再通过除法和取余运算来辞别诸君数字。
for i in ma.zcm123456a.cn range(100, 1000):
a = i // 100
b = i // 10 % 10
c = i % 10
if i == a ** 3 + b ** 3 + c ** 3:
print ma.xzrljd.cn (i)
这种看成比暴力排列的看成要快好多。
解法三:生成器抒发式
咱们不错使用生成器抒发式来完了输出通盘的水仙花数。生成器抒发式不错匡助咱们更优雅地完了关于一个序列的筛选操作。
narcissistic_numbers = ( ma.hxxinwen.cn i for i in range(100, 1000) if i == (i // 100) ** 3 + (i // 10 % 10) ** 3 + (i % 10) ** 3)
for number ma.zufang360.cn in narcissistic_ ma.zhilianwanju.cn numbers:
print(number)
这种看成使用了生成器抒发式,不错匡助咱们简化代码,况且幸免了在内存中存储通盘的水仙花数。
结语
以上是三种完了输出通盘水仙花数的看成。第一种看成节略径直呦女朱朱,相宜入门者长入,但成果较低。第二种看成对数学公式进行优化,不错教唆成果。第三种看成使用了生成器抒发式,代码愈加优雅简陋。聘任哪种看成,取决于具体的需求。
发布于:四川省