嗯?什么是 "水仙花数"?

咳咳,先来科普一下吧。

维基百科的定义如下: 

在数论中,水仙花数(Narcissistic number),也被称为超完全数字不变数(Pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),用来描述一个 N 位非负整数,其各位数字的 N 次方和等于该数本身。 

通俗的说: 水仙花数就是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153,153就是一个水仙花数。) 

还记得当初大一学习 C 语言的时候,老师只用了 12 行 C 语言代码就打印出了所有的 "水仙花数",当时觉得已经是很神奇了,代码也已经足够精简。

但是当我接触到 Python 的时候,我发现只需要 6 行 Python 代码即可实现。 

实现思路: ❉ 利用for循环控制100-999个数,每个数分解出个位,十位,百位。 

程序源代码: 

#!/usr/bin/python3
# -*- coding: UTF-8 -*-

for n in range(100, 999):
i = n/100
j = n/10 % 10
k = n % 10
if i*100 + j*10 + k == i**3 + j**3 + k**3:
print("%-5d" % n)






Tespera

爱看书,爱看电影,偶尔也听听歌。喜欢写如诗的代码,热爱 IT 行业。熟悉 Web 前端开发,了解 C、Python、PHP 等计算机语言。

3 Comments
子非鱼 2019-04-30 23:22

"多年以来,我认识到,当你拥有真正优秀的人才时,你不必对他们太纵容,"乔布斯后来解释说:"你期待他们做出好成绩,你就能让他们做出好成绩。 最初的 Mac 团队让我知道,最顶级的人才喜欢一起工作,而且他们是不能容忍平庸作品的。你到那个 Mac 团队里随便找个人问问,他们会告诉你,那些痛苦都是值得的。"

Post your comment