水仙花数是指一个 n 位数(n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身
如n=3,则指一个三位数,其各位数字立方和等于该数本身。
例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
下面列表生成式可以直接得到100-1000的水仙花数 (Python 3)
[ x for x in range(100,1000) if x ==((x // 100) ** 3 + (x // 10 % 10) ** 3 + (x % 10) ** 3)]
结果为
[153, 370, 371, 407]
通用的,修改n,可得不同结果,n=6以上就很慢了...
n = 4
[x for x in range(10**(n-1),10**n) if x == sum(int(str(x)[y]) ** n for y in range(n))]
n=4时得结果:
[1634, 8208, 9474]