I have tried this following code and it takes a lot of time when I set lower = 0 and upper = 10000
def sumPdivisors(n):
  '''This function returns the sum of proper divisors of a number'''
  lst = []
  for i in range(1,n//2+1):
    if n%i == 0:
      lst.append(i)
  return(sum(lst))
lower = int(input("Enter the lower value of range: "))
upper = int(input("Enter the upper value of range: "))
lst = []
for i in range(lower, upper+1):
    if i == 0:
      continue
    else:
      for j in range(i, upper):
        if i!=j and sumPdivisors(i) == j and sumPdivisors(j) == i:
          lst.append((i,j))
          break
print(lst)
 
    