python水仙花数_编程:水仙花数/完美数

问题描述:水仙花链接

参见回答:

Python算水仙花数的程序怎么改进?​www.zhihu.com
699104d23097804b945e348088e8b964.png

代码:

"""
寻找水仙花
* / % //	乘,除,余数,整除

"""

#获得最高位数
def max_num(x):
    len_int = len(str(x))  
    # print('整数长度:{}'.format(len_int), '--')
    return (x // 10 ** (len_int - 1))


def Find_daffodil(x):
    x1 = x
    list1 = []
    i = len(str(x1))
    j = max_num(x1)
    # print(j)
    list1.append(j)
    while x1 - j * 10 ** (i - 1) != 0:
        x1 -= j * 10 ** (i - 1)
        i = len(str(x1))
        j = max_num(x1)
        # print(j)
        list1.append(j)
    # print(list1)
    sum1 = 0
    for k, a0 in enumerate(list1):
        # print(a0)
        sum1 += a0**(len(str(x)))
    return(sum1)


print('=========')
for i in range(1000000):
    if Find_daffodil(i) - i == 0:
        print(i)

=========
0
1
2
3
4
5
6
7
8
9
153
370
371
407
1634
8208
9474
54748
92727
93084
548834

完美数

7122f91c0a98bdcd99b2508f5c3c8b14.png
def 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值