a = int(input())
b = [0 for i in range(a+1)]
# 初始化一个为零的列表,进行迭代b[i]=sum
result = {} # 初始化结果
for i in range(1,a+1):
sum = 0
for c in range(1,i):
if (i%c == 0):
sum += c # 表示i的因子和是sum
if sum <= a and b[sum] == i:
# 构造sum的因子和是i
print("{} {}".format(min(sum,i),max(sum,i)))
b[i] = sum
# 构造sum的因子会是i,对零列表挨个填充每一个元素都是对应i的因子和,所以第sum个元素是sum的因子和,即b[sum]==i.
亲密数是个比较经典的问题,因为了解过,可能有点复现的意思