Guest User

Untitled

a guest
Aug 4th, 2011
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.07 KB | None | 0 0
  1. from operator import mul
  2.  
  3. def primefactors(x):
  4.     """Function was found at http://pythonism.wordpress.com/2008/05/17/looking-at-factorisation-in-python/"""
  5.     factorlist=[]
  6.     loop=2
  7.     while loop<=x:
  8.         if x%loop==0:
  9.             x/=loop
  10.             factorlist.append(loop)
  11.         else:
  12.             loop+=1
  13.     return factorlist
  14.  
  15. def f(n ,m):
  16.     if n==1:
  17.         for k in range(m):
  18.             yield [k]
  19.     else:
  20.         for k in range(m):
  21.             for e in f(n-1, m):
  22.                 e.append(k)
  23.                 yield e
  24.  
  25. def factorize(n, m):
  26.     primes = sorted(primefactors(n))
  27.     result = []
  28.     for s in f(len(primes), m):
  29.         ss = sorted([reduce(mul, [le[1] for le in filter(lambda e: e[0]==i, zip(s, primes))], 1) for i in range(m)])
  30.         if not(ss in result):
  31.             result.append(ss)
  32.        
  33.     return result
  34.  
  35. def solve(mult=36, sons=3):
  36.     ps = [(sum(s), s) for s in factorize(mult, sons)]
  37.     dups = [t[1] for t in ps if len([e for e in ps if e[0]==t[0]])>1]
  38.     return sorted([e for e in dups if e.count(min(e))==1])
Advertisement
Add Comment
Please, Sign In to add comment