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")