Project Euler Problem 21

Python

def sum_of_divisors(n):
    if n == 1:
        return 0
    s = 1
    i = 2
    while i * i <= n:
        if n % i == 0:
            if i * i == n:
                s += i
            else:
                s += i + n // i
        i += 1
    return s

def is_amicable(n):
    m = sum_of_divisors(n)
    if n != m:
        if sum_of_divisors(m) == n:
            return True
    else:
        return False

print(sum(filter(is_amicable, range(2, 10000))))