今天悦儿姐来教大家怎么找三位水仙花数。题目是这样的:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
这道题目灰常简单,真的,very easy。悦儿姐都有点不想发了,不过因为这是道老题,回回考试都可能会考到它,在这里我就给你们讲讲。
我看网上很多朋友都会把每个数位都设成一个变量,可是悦儿姐看来看去脑子都绕晕了,直接用字符串遍历一下他不香吗?所以,就有了本人原创的另一种简单到爆的解法。
def sxh(n): # 注意 n是字符串类型
s=0
for i in n: # 遍历 分别取数字的百位、十位、个位
s+=int(i)**3 # 求立方 然后加它
return s
for x in range(100,1000): # 比较low 别嫌弃
y=sxh(str(x))
if y == x: # 判断
print(x)
# 到此结束
🆗?另外让悦儿来给你们科普一些小知识:
严格来说3位数的3次幂数才称为水仙花数。位数更多的有其他相应的称呼,具体如下:
四位的叫四叶玫瑰数共有3个:1634,8208,9474;
五位的叫五角星数共有3个:54748,92727,93084;
六位的叫六合数只有1个:548834;
七位的叫北斗七星数共有4个:1741725,4210818,9800817,9926315;
八位的叫八仙数共有3个:24678050,24678051,88593477。
有朋友问我21位水仙花数怎么求,哈哈,本孩子还在努力,如果单纯的把上面的程序改编,我可以负责的告诉你,你一个中午都守着吧,老费时间了。
好啦就到这里啦,下期再见