Python 7-5 完全数 (10 分)

7-5 完全数 (10 分)

完全数,指所有的真因子(即除了自身以外的约数)的和,恰好等于它本身。本题目要求读入2个整数A和B,输出该范围内的所有完全数(A<=完全数<=B)。

输入格式:
输入在一行中给出2个整数A和B。

输出格式:
以“完全数=约数1+约数2+…”的格式,输出该范围(A<=完全数<=B)内的所有完全数,每个完全数占一行。若该范围内没有完全数,则打印“no”。

输入样例:
在这里给出一组输入。例如:

1 100

输出样例:
在这里给出相应的输出。例如:

6=1+2+3
28=1+2+4+7+14

输入样例:

在这里给出一组输入。例如:

10 20

输出样例:
在这里给出相应的输出。例如:

no

这个产生的过程过于曲折,我也不知道该怎么写注释XD

from math import *
def Cpttttt(n):
    if n==1:
        return 0
    count = 0
    sum = 0
    c = ""
    d = ""
    for i in range(2,int(sqrt(n))+1):
        if n%i==0:
            if i==n/i:
                c += "+"+str(i)
                sum+=i
            else:
                c += "+"+str(i)
                z = str(int(n/i))
                d += z[::-1]+"+"
                sum+=i+n/i
    if sum+1 == n:
        count = 1
        print("{}=1{}{}{}".format(n,c[0],c[1:len(c)],d[::-1]))
    return count
a,b = map(int,input().split())
count = 0
for i in range(a,b+1):
    if Cpttttt(i):
        count+=1
if count==0:
    print("no")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值