Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from operator import mul
- def primefactors(x):
- """Function was found at http://pythonism.wordpress.com/2008/05/17/looking-at-factorisation-in-python/"""
- factorlist=[]
- loop=2
- while loop<=x:
- if x%loop==0:
- x/=loop
- factorlist.append(loop)
- else:
- loop+=1
- return factorlist
- def f(n ,m):
- if n==1:
- for k in range(m):
- yield [k]
- else:
- for k in range(m):
- for e in f(n-1, m):
- e.append(k)
- yield e
- def factorize(n, m):
- primes = sorted(primefactors(n))
- result = []
- for s in f(len(primes), m):
- ss = sorted([reduce(mul, [le[1] for le in filter(lambda e: e[0]==i, zip(s, primes))], 1) for i in range(m)])
- if not(ss in result):
- result.append(ss)
- return result
- def solve(mult=36, sons=3):
- ps = [(sum(s), s) for s in factorize(mult, sons)]
- dups = [t[1] for t in ps if len([e for e in ps if e[0]==t[0]])>1]
- return sorted([e for e in dups if e.count(min(e))==1])
Advertisement
Add Comment
Please, Sign In to add comment