牛客华为HJ56完全数计算

1
2
3
4
5
6
7
8
9
10
11
12
n = int(input())
num_list = []
for num in range(2,n+1): # 1 不属于完全数。这是常识定义。
sum_ = 0
for i in range(1,int((num)**0.5) +1): # 只需要算到 根号+1 位置即可。
if num%i == 0: # 因数 注定是成对出现
sum_ += i
sum_ += num//i
if sum_ == 2*num:
num_list.append(num)
# print(num)
print(len(num_list))