विभाजनकारी विभाजनकारी


17

एक सकारात्मक पूर्णांक को देखते हुए n आप हमेशा एक टपल पा सकते हैं (क1,क2,।।।,कम) पूर्णांक कमैं⩾2 ऐसी है कि और यहाँ अर्थ है , a का एक गुणक , जो "a dives b" कहता है। यदि सभी प्रविष्टियाँ कम से कम होनी चाहिए । के लिएक1⋅क2⋅।।।⋅कम=n

क1|क2 , क2|क3 , ... , कम-1|कम।
ए|खखएn>1कमैं2n=1 हमारे पास ऐसा कोई कारक नहीं है और इसलिए हमें एक खाली टपल मिलता है।

मामले में आप उत्सुक हैं कि यह कहाँ से आता है: इस अपघटन को संख्या सिद्धांत में अनौपचारिक कारक अपघटन के रूप में जाना जाता है और इसका उपयोग सूक्ष्म रूप से उत्पन्न एबेलियन समूहों के वर्गीकरण में किया जाता है ।

चुनौती

यह देखते हुए n उत्पादन सभी तरह के tuples (क1,क2,।।।,कम) को देखते हुए के लिए n ठीक एक बार, जो कुछ भी तरह आप आदेश। मानक आउटपुट स्वरूप की अनुमति है।

उदाहरण

  1: () (empty tuple)
  2: (2)
  3: (3)
  4: (2,2), (4)
  5: (5)
  6: (6)
  7: (7)
  8: (2,2,2), (2,4), (8)
  9: (3,3), (9)
 10: (10)
 11: (11)
 12: (2,6), (12)
108: (2,54), (3,3,12), (3,6,6), (3,36), (6,18), (108)

संबंधित: http://oeis.org/A000688 , n के सभी गुणक विभाजन सूचीबद्ध करें


क्या हम प्रत्येक टपल को रिवर्स ऑर्डर में आउटपुट कर सकते हैं? (जैसे 12,3,3)
— अरनौल्ड

1
@Arnauld हाँ, मुझे लगता है कि जब तक यह आरोही या अवरोही क्रम में क्रमबद्ध है तब तक यह ठीक होना चाहिए!
— दोष

क्या हम इनपुट को पूर्णांक> = 2 तक सीमित कर सकते हैं? यदि यह मौजूदा उत्तरों में से कुछ को अमान्य नहीं करेगा?
— निक केनेडी

1
नहीं, चश्मा स्पष्ट रूप से कहता है कि किसी भी सकारात्मक पूर्णांक को इनपुट के रूप में दिया जा सकता है जिसमें । अगर मैं इसे बदल देता हूं तो हर कोई जो वास्तव में ऐनक का पालन करता है, को अपना उत्तर बदलना होगा। n=1
— दोष

जवाबों:



3

05AB1E , 13 बाइट्स

Òœ€.œP€`êʒüÖP

इसे ऑनलाइन आज़माएं!

Ò                      # prime factorization of the input
 œ€.œ                  # all partitions
     P                 # product of each sublist
      €`               # flatten
        ê              # sorted uniquified
         ʒ             # filter by:
          üÖ           #  pairwise divisible-by (yields list of 0s or 1s)
            P          #  product (will be 1 iff the list is all 1s)

Òœ€.œPउपठेका पाने के लिए उपयोग करने का अच्छा तरीका । मैं वास्तव में कुछ कम के रूप में अच्छी तरह से खोजने में परेशानी थी .. अगर केवल एक Åœराशि के समान था, लेकिन राशि के बजाय उत्पाद के लिए। ;)
— केविन क्रूज़सेन 14

N = 1 के लिए विफल (प्रश्न पर टिप्पणी देखें)
— निक केनेडी


2

जावास्क्रिप्ट (V8) ,  73  70 बाइट्स

(कम,कम-1,।।।,क1)

f=(n,d=2,a=[])=>n>1?d>n||f(n,d+1,a,d%a[0]||f(n/d,d,[d,...a])):print(a)

इसे ऑनलाइन आज़माएं!

टिप्पणी की गई

f = (             // f is a recursive function taking:
  n,              //   n   = input
  d = 2,          //   d   = current divisor
  a = []          //   a[] = list of divisors
) =>              //
  n > 1 ?         // if n is greater than 1:
    d > n ||      //   unless d is greater than n,
    f(            //   do a recursive call with:
      n,          //     -> n unchanged
      d + 1,      //     -> d + 1
      a,          //     -> a[] unchanged
      d % a[0] || //     unless the previous divisor does not divide the current one,
      f(          //     do another recursive call with:
        n / d,    //       -> n / d
        d,        //       -> d unchanged
        [d, ...a] //       -> d preprended to a[]
      )           //     end of inner recursive call
    )             //   end of outer recursive call
  :               // else:
    print(a)      //   this is a valid list of divisors: print it

1

05AB1E , 17 15 14 बाइट्स

ѦIиæʒPQ}êʒüÖP

बड़े परीक्षण मामलों के लिए बहुत धीमी गति से।

-1 बाइट @ ग्रीम को धन्यवाद ।

इसे ऑनलाइन आज़माएं।

स्पष्टीकरण:

Ñ               # Get all divisors of the (implicit) input-integer
 ¦              # Remove the first value (the 1)
  Iи            # Repeat this list (flattened) the input amount of times
                #  i.e. with input 4 we now have [2,4,2,4,2,4,2,4]
    æ           # Take the powerset of this list
     ʒ  }       # Filter it by:
      PQ        #  Where the product is equal to the (implicit) input
         ê      # Then sort and uniquify the filtered lists
          ʒ     # And filter it further by:
           ü    #  Loop over each overlapping pair of values
            Ö   #   And check if the first value is divisible by the second value
             P  #  Check if this is truthy for all pairs

                # (after which the result is output implicitly)

n=8

1
13 और तेज । ऐसा लगता है कि यह अभी भी छोटा हो सकता है।
— ग्रिमी

1

जावास्क्रिप्ट, 115 बाइट्स

f=(n,a=[],i=1)=>{for(;i++<n;)n%i||(a=a.concat(f(n/i).filter(e=>!(e[0]%i)).map(e=>[i].concat(e))));return n>1?a:[a]}

मैं बाद में एक स्पष्टीकरण लिखूंगा


1

वोल्फ्राम लैंग्वेज (मैथमेटिका) , 78 76 72 71 67 बाइट्स

If[#>(p=1##2),Join@@If[i∣##,##~#0~i,{}]~Table~{i,2,#/p},{{##2}}]&

इसे ऑनलाइन आज़माएं!

पुनरावर्ती वृक्ष।


जानवर बल समाधान, 64 बाइट्स :

Union@Cases[Range@#~Tuples~#,{a__,__}/;1a==#&&a>=2&&1∣a:>{a}]&

N के सभी गुणात्मक विभाजन को सूचीबद्ध करने के लिए मेरे गणित समाधान का तुच्छ संशोधन ।

चूंकि यह जांच करने की जरूरत है nntuples, उसी तर्क का उपयोग करके अधिक कुशल संस्करण आज़माएं ।


0

जाप , 22 बाइट्स

â Åï c à f@¥XשXäv eÃâ

कोशिश करो

â Åï c à f@¥XשXäv eÃâ     :Implicit input of integer U
â                          :Divisors
  Å                        :Slice off the first element, removing the 1
   ï                       :Cartesian product
     c                     :Flatten
       à                   :Combinations
         f                 :Filter by
          @                :Passing each sub-array X through the following function
           ¥               :  Test U for equality with
            X×             :  X reduced by multiplication
              ©            :  Logical AND with
               Xä          :  Consecutive pairs of X
                 v         :  Reduced by divisibility
                   e       :  All truthy?
                    Ã      :End filter
                     â     :Deduplicate
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.