python好写,但是确实太慢
solve 1:conmmon calculate,一般解法

def perfnum(n):
    if n<4:return 0
    else:
        pnn=0
        for mm in range(4,n+1): #calculate perfact number
            sum = 0
            for s in range(1,mm//2+2):
                if mm%s==0:sum+=s
            if sum==mm:pnn+=1
        return pnn
while 1:
    try:
        n=int(input())
        print(perfnum(n))
    except:break

solve 2:create dictionary tojudge(faster),构架字典解法

#dict algorithm
def perfdict(n):
    pdict={}
    for i in range(1,n+1):#create unit dict
        pdict[i]=1
    sum=0
    for i in range(2,n):
        for j in range(i+1,n//i+1): #modify number dict,the dict cannot created out of length
            pdict[i*j]=pdict[i*j]+i+j
    for p in range(2,n+1):
        if pdict[p]==p:sum+=1        #if key eqauls value,add 1 to sum
    return sum
while 1:
    try:
        n=int(input())
        print(perfdict(n))
    except:break

solve 3:enumeration algorithm #暴力枚举法

while 1:
    try:
        n=int(input())
        print(len(list(filter(lamda x:x<=n,[6,28,496,8128]))))
    except:break