diff --git a/e021.py b/e021.py new file mode 100644 index 0000000..791fe5e --- /dev/null +++ b/e021.py @@ -0,0 +1,28 @@ +from e007 import is_prime +from e012 import factor + +MIN = 2 +MAX = 10000 + +def proper_divisors(n): + """Returns the proper divisors of n + + Proper divisors are defined as numbers less than n which divide evenly into n + """ + divisors = factor(n) + # Knock off the last factor, since it is equal to n + return divisors[:-1] + +sums = {} +amicable = [] +i = MIN +while i < MAX: + if not is_prime(i): + s = sum(proper_divisors(i)) + sums[i] = s + if s in sums and i == sums[s] and i != s: + print i, s, sums[s] + amicable.append(i) + amicable.append(s) + i = i + 1 +print 'Sum of amicable numbers less than {0}: {1}'.format(MAX, sum(amicable)) \ No newline at end of file