⭐刷Python算法题第11天,可能一点一点积累,菜鸟会变成大佬...⭐
问题描述:水仙花数,又称完全数字不变数、自恋数、自幂数、阿姆斯特朗数,是指一个n位数(n≥3),它的每个数位上的数字的n次幂之和,等于它本身(例如:1³+5³+3³=153)。严格来说,只有三维数的三次幂才能被视为水仙花数。
1)找出1000以内的水仙花数
程序代码:
x = 100
while int(x)<=999:
a = int(x/100) # 取出x的百位
b = int((x-a*100)/10) # 取出x的十位
c = x - a*100 - b*10 # 取出x的个位
if a**3+b**3+c**3 == x:
print("百位:",a, "十位:",b,"个位:",c)
x += 1
程序思路:
分别取出x的百位、十位、个位,然后分别取他们三次方的和与x作比较,如果相等则分别输出各个位的数。
2)找出5位水仙花数
程序代码:
for i in range(10000,100000):
sum = 0
temp = i
while temp:
sum = sum+(temp%10)**5
temp //= 10
if sum == i:
print(i)
程序思路:
思路和1)类似,都是取出i的各个位上的数值,假如i=123,则 i%10后为3,i//=10后为12,再次%10后为2,//=10后为1,最后%10后为1,//=10后为0。
3)找出100000以内的水仙花数(包括1位、2位)
程序代码:
for i in range(0,100000):
sum = 0
temp = i
num_length = len(str(i))
while temp:
sum = sum+(temp%10)**num_length
temp //= 10
if sum == i:
print(i)
程序思路:
寻找0~99999(包括边界的水仙花数),需要判断数的位数,方便算得三次方。