Problem 21 : Amicable numbers

Problem Statement

Let d(n) be defined as the sum of proper divisors of n (numbers less than n which divide evenly into n). If d(a) = b and d(b) = a, where a ≠ b, then a and b are an amicable pair and each of a and b are called amicable numbers.

For example, the proper divisors of 220 are 1, 2, 4, 5, 10, 11, 20, 22, 44, 55 and 110; therefore d(220) = 284. The proper divisors of 284 are 1, 2, 4, 71 and 142; so d(284) = 220.

Evaluate the sum of all the amicable numbers under 10000.

Solution

def divisor(x):
    lt=[]
    for i in range(1,x):
        if x%i==0:
            lt.append(i)
    return lt
def d(s):
    return sum(divisor(s))
am_num=[]

for i in range(1,10000+1):
    a=d(i)
    b=d(a)

    if b==i and a!=i:
        am_num.append(i)

print (sum(am_num))

Output

31626