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