"""
Дружественные числа
это два натуральных числа, таких,
что сумма всех делителей одного числа (меньших самого этого числа)
равна другому числу, и наоборот.
Используйте функцию, которая вычисляет сумму делителей числа
Найдите все пары дружественных чисел, каждое из которых меньше 10000
Python 3.7
"""
def sum_del(a):
summ = 0
for i in range(1, a//2+2):
if a/i == a//i:
summ += i
return summ
n = 1
m = 6000
cnt = (m-n+1)//40
ind = []
sd = []
pairs = []
for i in range(n,m+1):
ind.append(i)
sd.append(sum_del(i))
if not i%cnt:
print('.',end='')
print()
for i in range(m-n+1):
for j in range(i, m-n+1):
#if n+i == sd[j] and n+j == sd[i]:# так, если совершенные числа тоже учитывать
if n+i == sd[j] and n+j == sd[i] and sd[j] != sd[i]:# так, если совершенные числа не учитывать
pairs.append((n+i, sd[j]+j-i))
if not i%cnt:
print('-',end='')
print()
for a in pairs:
print(*a, sep=', ')
IiIiCtCU0YDRg9C20LXRgdGC0LLQtdC90L3Ri9C1INGH0LjRgdC70LAK0Y3RgtC+INC00LLQsCDQvdCw0YLRg9GA0LDQu9GM0L3Ri9GFINGH0LjRgdC70LAsINGC0LDQutC40YUsCtGH0YLQviDRgdGD0LzQvNCwINCy0YHQtdGFINC00LXQu9C40YLQtdC70LXQuSDQvtC00L3QvtCz0L4g0YfQuNGB0LvQsCAo0LzQtdC90YzRiNC40YUg0YHQsNC80L7Qs9C+INGN0YLQvtCz0L4g0YfQuNGB0LvQsCkK0YDQsNCy0L3QsCDQtNGA0YPQs9C+0LzRgyDRh9C40YHQu9GDLCDQuCDQvdCw0L7QsdC+0YDQvtGCLgoK0JjRgdC/0L7Qu9GM0LfRg9C50YLQtSDRhNGD0L3QutGG0LjRjiwg0LrQvtGC0L7RgNCw0Y8g0LLRi9GH0LjRgdC70Y/QtdGCINGB0YPQvNC80YMg0LTQtdC70LjRgtC10LvQtdC5INGH0LjRgdC70LAK0J3QsNC50LTQuNGC0LUg0LLRgdC1INC/0LDRgNGLINC00YDRg9C20LXRgdGC0LLQtdC90L3Ri9GFINGH0LjRgdC10LssINC60LDQttC00L7QtSDQuNC3INC60L7RgtC+0YDRi9GFINC80LXQvdGM0YjQtSAxMDAwMAoKUHl0aG9uIDMuNwoiIiIKZGVmIHN1bV9kZWwoYSk6CiAgICBzdW1tID0gMAogICAgZm9yIGkgaW4gcmFuZ2UoMSwgYS8vMisyKToKICAgICAgICBpZiBhL2kgPT0gYS8vaToKICAgICAgICAgICAgc3VtbSArPSBpCiAgICByZXR1cm4gc3VtbQoKbiA9IDEKbSA9IDYwMDAKY250ID0gKG0tbisxKS8vNDAKCmluZCA9IFtdCnNkID0gW10KcGFpcnMgPSBbXQpmb3IgaSBpbiByYW5nZShuLG0rMSk6CiAgICBpbmQuYXBwZW5kKGkpCiAgICBzZC5hcHBlbmQoc3VtX2RlbChpKSkKICAgIGlmIG5vdCBpJWNudDoKICAgICAgICBwcmludCgnLicsZW5kPScnKQoKcHJpbnQoKSAgICAKCmZvciBpIGluIHJhbmdlKG0tbisxKToKICAgIGZvciBqIGluIHJhbmdlKGksIG0tbisxKToKICAgICAgICAjaWYgbitpID09IHNkW2pdIGFuZCBuK2ogPT0gc2RbaV06IyDRgtCw0LosINC10YHQu9C4INGB0L7QstC10YDRiNC10L3QvdGL0LUg0YfQuNGB0LvQsCDRgtC+0LbQtSDRg9GH0LjRgtGL0LLQsNGC0YwKICAgICAgICBpZiBuK2kgPT0gc2Rbal0gYW5kIG4raiA9PSBzZFtpXSBhbmQgc2Rbal0gIT0gc2RbaV06IyDRgtCw0LosINC10YHQu9C4INGB0L7QstC10YDRiNC10L3QvdGL0LUg0YfQuNGB0LvQsCDQvdC1INGD0YfQuNGC0YvQstCw0YLRjAogICAgICAgICAgICBwYWlycy5hcHBlbmQoKG4raSwgc2Rbal0rai1pKSkKICAgIGlmIG5vdCBpJWNudDoKICAgICAgICBwcmludCgnLScsZW5kPScnKQoKcHJpbnQoKSAgICAKZm9yIGEgaW4gcGFpcnM6CiAgICBwcmludCgqYSwgc2VwPScsICcpCiAgICAK