水仙花数,若一个数的每一位的三次方之和等于此数则称这个数为水仙花数(如:
153 = 1^3+5^3+3^3),今天我们便讨论下三位数中所有水仙花数的求法。
由于水仙花最简单的证明方法即它的定义,所以只要从数字中把他的各个位“取出来”分别三次方再相加并与原数字比较即可,根据这个思想,不难想出两种方法:
1.用整除(//)和求余(%)的方法算出三位:
即个位数=原数%10,百位数 =原数//100,十位数=原数//10%10,再相加...
2.利用python的切片的能力:
令原数(字符串)为‘i’
个位=int(i[0]),十位=int(i[1]),百位=int(i[2]),再相加...
两种方法皆可输出结果:153、370、371、407
参考代码如下:
i = 100
while i<1000:
if pow(int(str(i)[0]),3)+pow(int(str(i)[1]),3)+pow(int(str(i)[2]),3)==i:
print(i)
i+=1
i = 100
while i<1000:
if (i%10)**3+(i//100)**3+(i//10%10)**3==i:
print(i)
i+=1