题目:打印出所有的”水仙花数”,
定义:”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
示例:153是一个”水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
答案:153,370,371,407
分析1:假设三位数abc是个水仙花数,则 a**3+b**3+c**3=abc
for N in range(100,1000):#三位数范围
n=str(N)
a=int(n[0])
b=int(n[1])
c=int(n[2])
if a**3+b**3+c**3==N:
print(N)
分析2:假设三位数是N,那么百位上数等于N整除100的商,十位数上数等于N减去百位上的值,再整除10的商,个位数上数等于N减去百位的值再减去十位的值
for N in range(100,1000):
a=N//100
b=(N-a*100)//10
c=N-a*100-b*10
if a**3+b**3+c**3==N:
print(N)
分析3:数字i,j,k组成一个水仙花,可以表示为ijk,这种方法不推荐。
for i in range(1,10):
for j in range(0,10):
for k in range(0,10):
string=str(i)+str(j)+str(k)
if (i**3+j**3+k**3)==int(string):
print(int(string))
举一反三:判断一个数字是不是水仙花?