for number in range(2, 20000):
divider_sum = 0
for divider in range(1, int(number // 2 + 1)):
if number % divider == 0:
divider_sum += divider
if number - divider_sum == 1:
print(number, divider_sum)
выводит:
2 1
4 3
8 7
16 15
32 31
64 63
128 127
256 255
512 511
1024 1023
2048 2047
4096 4095
8192 8191
16384 16383
Ошибка в твоем коде, когда задаешь диапазон возможных делителей числа. И я не поняла зачем дальше сортировка х происходит, например.
Чтобы выполнилась именно поставленная задача: “напечатать максимальное почти совершенное число”, добавляем еще пару строк:
numbers = []
for number in range(2, 20000+1):
divider_sum = 0
for divider in range(1, int(number // 2 + 1)):
if number % divider == 0:
divider_sum += divider
if number - divider_sum == 1:
numbers.append(number)
maximal_number = max(numbers)
print(maximal_number)