某自然数除它本身外的所有因子之和等于该数,则该数被称为完数。输入一个正整数N,输出N以内的所有完数。
解法1:(时间复杂度较大)
l,list=abs(int(input())),[]
for i in range(2,l+1):
for j in range(1,int(i/2)+1):
if i%j==0:
list.append(j)
if sum(list)==i:
print(i,end=" ")
list=[]
解法2:(时间复杂度较小)
import math
for j in range(int(input())):
arr=[]
for i in range(2,math.ceil(math.sqrt(j))):
if j%i==0:
arr+=[i,j/i]
if(sum(arr,1)==j) and (j!=1):
print(j,end=" ")