题解 | #完全数计算#
完全数计算
https://www.nowcoder.com/practice/7299c12e6abb437c87ad3e712383ff84
折腾了几个小时,终于过了。
- 刚开始就想到全部遍历计算时间会增加,应该开方遍历,前面题解已经做过,知道方法
- 列表中的求和,刚开始用for遍历,计算量也增加了,最后查看别人直接sum,自己也沿用
- 比较绕的地方就是两层循环,sum该在那里,print在哪里,每次sum完都需把列表初始话,多层循环一定要想清楚,每个位置,
n = int(input())
list = [1]
count = 0
for i in range(5,n):
for j in range(2,int(pow(i,0.5)+1)):
if i % j == 0:
k = i // j
list.append(j)
list.append(k)
list1 = set(list)
if sum(list1) == i:
count = count + 1
list = [1]
print(count)