Skip to content

Instantly share code, notes, and snippets.

@tripped
Created May 9, 2013 07:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tripped/5546125 to your computer and use it in GitHub Desktop.
Save tripped/5546125 to your computer and use it in GitHub Desktop.
from itertools import product, ifilter
from operator import add
from math import sqrt
def divisors(n):
return [1] + reduce(add, ([i, n//i] for i in range(2, int(sqrt(n)) + 1) if n % i == 0), [])
def is_amicable((a, b)):
return sum(divisors(a)) == b and sum(divisors(b)) == a
amicable_pairs = ifilter(is_amicable, product(xrange(1,10000), repeat=2))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment