Skip to content

Instantly share code, notes, and snippets.

@msalahi
Created September 14, 2011 22:19
Show Gist options
  • Save msalahi/1217968 to your computer and use it in GitHub Desktop.
Save msalahi/1217968 to your computer and use it in GitHub Desktop.
oheyandy2
import math
import time
import itertools
def isAbundant(n):
div = [1]
for i in range(2,int(math.sqrt(n))+1):
if n%i==0:
div += [i] if i==n/i else [i,n/i]
return True if sum(div)>n else False
t1 = time.time()
abundantNumbers = [n for n in xrange(1,28124) if isAbundant(n)]
t2 = time.time()
print "Compiling list of abundant numbers: ",t2-t1,"sec"
t1=time.time()
abundantSums = set(i[0]+i[1] for i in itertools.combinations_with_replacement(abundantNumbers,2) if i[0]+i[1]<=28123)
t2 = time.time()
print "Getting all pairs-sums of abundant numbers: ",t2-t1,"sec"
t1=time.time()
answer = sum(set(range(1,28124)).difference(abundantSums))
t2 = time.time()
print "Set difference operation: ",t2-t1,"sec"
print "Answer: ",answer
#Answer is 4179871
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment