2012-08-08 8 views
7

में अनोखे तरीके से दो सूचियां संयोजित मैं परियोजना यूलर समस्या 5 पर काम कर रहा हूँ और निम्न का उपयोग कर रहा:अजगर

def findLCM(k): 
start=time.time() 
primes=[2,3,5,7,11,13,17,19,23] 
factors=[] 
for factor in range(2,k): 
    if factor in primes: 
     factors.append(factor) 
    else: 
     factorization=[] 
     while factor!=1: 
      for prime in primes: 
       lastFactor=prime 
       if factor%prime==0: 
        factor/=prime 
        factorization.append(lastFactor) 
        break 
     tmpFactors=[] 
     for tmpFactor in factorization: 
      if tmpFactor not in factors: 
       factors.append(tmpFactor) 
      else: 
       tmpFactors.append(tmpFactor) 
       factors.remove(tmpFactor) 
     for tmpFactor in tmpFactors: 
      factors.append(tmpFactor) 
     print factors 
product=1 
for factor in factors: 
    product*=factor 
factors.sort() 
end=time.time() 
fnTime=end-start 
return product, fnTime, factors 

वहाँ एक अजगर समारोह जिसके साथ मैं की तरह इस समारोह करता गुणन और कारकों को जोड़ सकते हैं है? उदाहरण के लिए, यदि factors=[2, 3, 5] और factorization=[2, 2, 3], संयुक्त सूची [2, 2, 3, 5] होनी चाहिए।

+0

परियोजना यूलर समस्या 5: 2520 सबसे छोटी संख्या है कि किसी भी शेष के बिना 1 से 10 तक संख्या से प्रत्येक के द्वारा विभाजित किया जा सकता है। सबसे कम सकारात्मक संख्या क्या है जो सभी संख्याओं से 1 से 20 तक समान रूप से विभाजित है? – krushers

+0

इसके अलावा, यदि आप जानते हैं कि संख्याओं के दो सेटों के इस संघ के लिए गणितीय भाषा क्या है, तो कृपया मुझे बताएं। – krushers

उत्तर

23

शब्दावली "multisets का संघ" है।

यह collections.Counter का उपयोग कर पायथन में कार्यान्वित किया जाता:

>>> from collections import Counter 
>>> combined = Counter([2, 3, 5]) | Counter([2, 2, 3]) 
>>> list(combined.elements()) 
[2, 2, 3, 5] 
+1

वाह। मुझे नहीं पता था कि काउंटर ने '|' ऑपरेटर का समर्थन किया है (जहां यह भी दस्तावेज है?)। शानदार उत्तर (मुझसे +1)। – mgilson

+1

वाह, अच्छा जवाब। रचनात्मक सुझाव – Exelian

+1

के लिए उपरोक्त, धन्यवाद। – krushers