def is_perfect_square(n): i = 1 while i * i < n: i += 1 return i * i == n, i def aliquot(n): sum = 1 i = 2 is_ps, root = is_perfect_square(n) while i < root: if n % i == 0: sum += i + (n / i) i += 1 return sum amicable = [] n = 1000 while n < 10000: m = aliquot(n) if m > n and aliquot(m) == n: print m, n n += 1