Example #1
0
def slow():
  """
  Use a generating function to retrieve partition of size k
  and determine the smallest integer that satisfy sum(ak) = prod(ak)

  EDIT: works but two slow (exponential time to compute the partitions)
  """
  import IntegerPartitions
  prod = lambda iterable: reduce(lambda x,y: x*y, iterable, 1)

  s = set()
  i = 2
  for k in range(2,N+1):
    #i = k
    while True:
      for p in IntegerPartitions.mckay(i): 
        if len(p) != k: continue
        if prod(p) == i: 
          break
      if prod(p) == i:
        break
      i += 1
    print "found", i, k
    s.add(i)
  return sum(s)
Example #2
0
 def fixed_length_partitions(i,k):
   return IntegerPartitions.fixed_length_partitions(i,k)