【一起来刷Python题】——12.解决水仙花问题

⭐刷Python算法题第11天,可能一点一点积累,菜鸟会变成大佬...⭐

【一起来刷Python题】——12.解决水仙花问题_第1张图片问题描述:水仙花数,又称完全数字不变数、自恋数、自幂数、阿姆斯特朗数,是指一个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(包括边界的水仙花数),需要判断数的位数,方便算得三次方。

 

你可能感兴趣的:(python每日一题,python,开发语言,后端,算法,pycharm)