编写一个程序,求 100~999 之间的所有水仙花数。
如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153就是一个水仙花数。
这个问题本身并不难,从题目中已经得知判断的标准是:满足方程abc = a^3 + b^3 + c^3即可,
所以解决问题的关键是将一个三位数的百位,十位,个位的数分离出来,具体的办法已在代码中给出。
#编写一个程序,求 100~999 之间的所有水仙花数。
#如果一个 3 位数等于其各位数字的立方和,则称这个数为水仙花数。例如:153 = 1^3 + 5^3 + 3^3,因此 153 就是一个水仙花数。
def funcation():
result=0 #初始化结果变量
for i in range(100,1000): #由于
a=int(i/100) #百位 百位自行理解即可
b=int((i%100)/10) #十位 取法思想:先取两位数,然后再取整,即得到十位上的数
c=int(i%10) #个位 取法思想:直接除以10进行取余操作,即可得个位上的数
if i==power(a,3)+power(b,3)+power(c,3):#循环查找符合水仙花数条件的数
result=result+1
print(result,i)
def power(num,pow):#求一个数的N次方
global num1
num1=1
for each in range(pow):
num1=num*num1
return num1
funcation()