अधिकतम पारस्परिक रूप से सह-प्रधान कारक


14

परिभाषाएं

  • दो नंबर सह-प्रधान हैं यदि उनका एकमात्र सकारात्मक सामान्य भाजक है 1
  • संख्याओं की एक सूची परस्पर सह-अभाज्य है यदि उस सूची के भीतर हर संख्या के जोड़े एक-दूसरे के साथ सह-प्रधान हैं।
  • संख्या nका एक गुणन उन संख्याओं की एक सूची है जिनके उत्पाद हैं n

कार्य

एक सकारात्मक संख्या को देखते हुए n, nअधिकतम लंबाई के साथ पारस्परिक रूप से सह-प्रधान उत्पादन का उत्पादन होता है जिसमें शामिल नहीं होता है 1

उदाहरण

के लिए n=60, उत्तर है [3,4,5], क्योंकि 3*4*5=60और कोई अन्य पारस्परिक रूप से सह-अभाज्य गुणनखंडण 1से अधिक या इसके बराबर 3की लंबाई नहीं है।

नियम और स्वतंत्रता

  • आप किसी भी उचित इनपुट / आउटपुट प्रारूप का उपयोग कर सकते हैं।
  • आउटपुट सूची में प्रविष्टियों को क्रमबद्ध करने की आवश्यकता नहीं है।

परीक्षण के मामलों

n   output
1   []
2   [2]
3   [3]
4   [4]
5   [5]
6   [2, 3]
7   [7]
8   [8]
9   [9]
10  [2, 5]
11  [11]
12  [3, 4]
13  [13]
14  [2, 7]
15  [3, 5]
16  [16]
17  [17]
18  [2, 9]
19  [19]
20  [4, 5]
21  [3, 7]
22  [2, 11]
23  [23]
24  [3, 8]
25  [25]
26  [2, 13]
27  [27]
28  [4, 7]
29  [29]
30  [2, 3, 5]
31  [31]
32  [32]
33  [3, 11]
34  [2, 17]
35  [5, 7]
36  [4, 9]
37  [37]
38  [2, 19]
39  [3, 13]
40  [5, 8]
41  [41]
42  [2, 3, 7]
43  [43]
44  [4, 11]
45  [5, 9]
46  [2, 23]
47  [47]
48  [3, 16]
49  [49]
50  [2, 25]
51  [3, 17]
52  [4, 13]
53  [53]
54  [2, 27]
55  [5, 11]
56  [7, 8]
57  [3, 19]
58  [2, 29]
59  [59]
60  [3, 4, 5]
61  [61]
62  [2, 31]
63  [7, 9]
64  [64]
65  [5, 13]
66  [2, 3, 11]
67  [67]
68  [4, 17]
69  [3, 23]
70  [2, 5, 7]
71  [71]
72  [8, 9]
73  [73]
74  [2, 37]
75  [3, 25]
76  [4, 19]
77  [7, 11]
78  [2, 3, 13]
79  [79]
80  [5, 16]
81  [81]
82  [2, 41]
83  [83]
84  [3, 4, 7]
85  [5, 17]
86  [2, 43]
87  [3, 29]
88  [8, 11]
89  [89]
90  [2, 5, 9]
91  [7, 13]
92  [4, 23]
93  [3, 31]
94  [2, 47]
95  [5, 19]
96  [3, 32]
97  [97]
98  [2, 49]
99  [9, 11]

स्कोरिंग

यह । बाइट्स जीत में सबसे छोटा जवाब।




कठिन अनुवर्ती चुनौती: परिणामी सूची में केवल निकटवर्ती जोड़े को सह-प्रधान होने की आवश्यकता है।
मार्टिन एंडर

4
क्या यह सिर्फ प्रमुख शक्तियों में एक कारक है?
पाओलो एबरमन

1
@ Pa @loEbermann हाँ, यह है।
लीक

जवाबों:


10

मैथिक्स , 24 बाइट्स

#^#2&@@@FactorInteger@#&

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


5
#^#2&@@@FactorInteger@#&[1]{1}गणितज्ञ में लौटता है। लेकिन यह गणित में काम करता है।
एलेफाल्फा

@alephalpha धन्यवाद, यह मेरे लिए भी नहीं हुआ होगा कि मैथिक्स FactorIntegerअलग तरीके से लागू हो । :)
मार्टिन एंडर

9

ब्रेकीलॉग , 4 बाइट्स

ḋḅ×ᵐ

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

व्याख्या

       # output is the list of
  ×ᵐ   # products of each
 ḅ     # block of consecutive equal elements
ḋ      # of the prime factors
       # of the input

2
आपके पहले Brachylog उत्तर पर बधाई! ... कम से कम मुझे लगता है?
घातक

1
@ घातक: मेरा दूसरा मुझे लगता है। मेरे पास यह पहले से था। निश्चित रूप से मेरा सबसे छोटा हालांकि :)
एमिग्ना

5

05AB1E , 3 5 बाइट्स

के किनारे के मामले को ठीक करने के लिए +2 बाइट्स 1। पैच के लिए रिले के लिए धन्यवाद (और टेस्ट सूट के लिए, मेरा 05ab1e उतना मजबूत नहीं है!)

ÒγP1K

टेस्ट सूट ऑनलाइन यह कोशिश करो!

कैसे?

Ò     - prime factorisation, with duplicates
 γ    - split into chunks of consecutive equal elements
  P   - product of each list
   1  - literal one
    K - removed instances of top from previous
      - implicitly display top of stack

@ अदनान यह है कि "बाइट्स" के लिए सबसे अच्छा लिंक या कहीं एक स्वरूपित कोड पृष्ठ है?
जोनाथन एलन

हाँ, एक कोड-पेज है जो सभी बाइट्स को प्रदर्शित करता है।
अदनान

1
ओह, मैं इसे कैसे याद करूँगा> _ <बहुत बहुत धन्यवाद :)
जोनाथन एलन

के लिए काम नहीं करता है 1
लीक नून

@ लीकन ने मदद के साथ तय किया :)
जोनाथन एलन


3

हास्केल , 51 बाइट्स

(2#) एक अनाम फ़ंक्शन एक पूर्णांक ले रहा है और एक सूची लौटा रहा है।

के रूप में उपयोग करें (2#) 99

m#n|m>n=[]|x<-gcd(m^n)n=[x|x>1]++(m+1)#div n x
(2#)

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

पावर ट्रिक से प्रेरित होकर कुछ लोगों ने हालिया स्क्वायरफ्री नंबर चैलेंज में इस्तेमाल किया ।

  • m#nसे nशुरू करने के कारक उत्पन्न करता है m
  • यदि m>n, हम रोकते हैं, तो निष्कर्ष निकालते हैं कि हमने पहले ही सभी कारकों को ढूंढ लिया है।
  • x=gcd(m^n)nवह सबसे बड़ा कारक है nजिसके प्रमुख कारक सभी में हैं m। ध्यान दें कि क्योंकि छोटे mका परीक्षण पहले किया जाता है, यह 1तब तक होगा जब तक mकि प्राइम न हो ।
  • हम शामिल xजिसके परिणामस्वरूप सूची में अगर यह 1 नहीं है, और फिर अगले के साथ recurse m, विभाजित nद्वारा x। ध्यान दें कि xऔर div n xसामान्य कारक नहीं हो सकते।
  • (2#)एक संख्या लेता है और इसके कारकों को खोजना शुरू करता है 2

3

MATL , 7 बाइट्स

&YF^1X-

इसे ऑनलाइन आज़माएं! या सभी परीक्षण मामलों को सत्यापित करें

व्याख्या

80 उदाहरण के रूप में इनपुट पर विचार करें ।

&YF    % Implicit input. Push array of unique prime factors and array of exponents
       % STACK: [2 3 5], [4 0 1]
^      % Power, element-wise
       % STACK: [16 1 5]
1      % Push 1
       % STACK: [16 1 5], 1
X-     % Set difference, keeping order. Implicitly display
       % STACK: [16 5]

EDIT (9 जून, 2017): YFदो आउटपुट के साथ 20.1.0 रिलीज में संशोधित किया गया है : गैर-कारक प्राइम और उनके (शून्य) एक्सपोर्टर को छोड़ दिया जाता है। यह उपरोक्त कोड को प्रभावित नहीं करता है, जो किसी भी बदलाव की आवश्यकता के बिना काम करता है (लेकिन 1X-हटाया जा सकता है)।


मुझे लगता है कि परिवर्तन का मतलब 1X-नई रिलीज में बेमानी है ... यह भी, कि मेरे लिए अंतर के बजाय सेट अंतर जैसा दिखता है।
अर्जन जोहान्सन

@ .RjanJohansen दोनों पर सही। धन्यवाद!
लुइस मेंडो

2

जेली , 5 बाइट्स

ÆF*/€

टेस्ट सूट ऑनलाइन यह कोशिश करो!

कैसे?

ÆF*/€ - Main link: n
ÆF    - prime factors as [prime, exponent] pairs
   /€ - reduce €ach with:
  *   - exponentiation

एक और तरीका है कि तुम्हारा (दुर्भाग्य से विफल) के साथ टाई होगा खोजने के प्रयास में एक वैकल्पिक 6-बाइट समाधान ÆfŒgZP:। इसमें टोकन की संख्या समान है लेकिन बहुत सारे दो-बाइट परमाणु;)
हाइपरयूट्रीनो

... और मेरी हटाई गई 05ab1e प्रविष्टि की तरह यह 1एक इनपुट के लिए वापस आ जाता है, 1जो अस्वीकृत (एक खाली उत्पाद के प्रदर्शन का प्रभाव) है।
जोनाथन एलन

:( ठीक है, वूप्स, अनदेखी की है कि डारन ।: पी
हाइपरयूट्रीनो

2

ऐलिस , 10 बाइट्स

Ifw.n$@EOK

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

दुर्भाग्य से, यह कोड अंकों को पूर्णांक I / O के रूप में फिर से उपयोग करता है । TIO लिंक में परीक्षण का मामला इनपुट 191808 है जो 64 , 81 और 37 में विघटित होता है । ध्यान दें कि यह समाधान प्रमुख शक्तियों को सबसे बड़े से सबसे छोटे प्राइम तक प्रिंट करता है, इसलिए हम आउटपुट प्राप्त करते हैं %Q@

सुविधा के लिए, यहाँ दशमलव I / O के साथ 16-बाइट समाधान है जो एक ही कोर एल्गोरिथ्म का उपयोग करता है:

/O/\K
\i>fw.n$@E

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

व्याख्या

अन्य उत्तरों के रूप में, यह इनपुट को प्रमुख शक्तियों में बदल देता है।

I      Read a code point as input.
f      Compute its prime factorisation a prime/exponent pairs and push them
       to the stack in order from smallest to largest prime.
w      Remember the current IP position on the return address stack. This
       starts a loop.
  .      Duplicate the current exponent. This will be zero once all primes
         have been processed.
  n$@    Terminate the program if this was zero.
  E      Raise the prime to its corresponding power.
  O      Output the result as a character.
K      Return to the w to run the next loop iteration.

2

गणितज्ञ 46 बाइट्स

#[[1]]^#[[2]]&/@If[#==1,#={},FactorInteger@#]&

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


अच्छा जवाब, लेकिन यह कुछ परीक्षण मामलों के लिए थोड़ा गलत आउटपुट दे रहा है। वर्तमान में आपका कोड आउटपुट है {}; {2}; {3}; {2}; {5}; {2,3}; {7}; {2}; {3}; {2,5}; {11}; {2,3}; {13}; ... लेकिन इसके {}; {2}; {3}; {4}; {5}; {2,3}; {7}; {8}; {9}; {2,5}; {11}; {4,3}; {13}; ...बजाय आउटपुट होना चाहिए ।
केविन क्रूज़सेन

मुझे लगता है कि मैंने इसे ठीक कर दिया
J42161217

वास्तव में TIO में काम करने लगता है । +1 ओह, और PPCG में आपका स्वागत है, मुझे लगता है कि आप यहाँ काफी नए हैं। आप शायद पहले से ही इसे देख चुके हैं, लेकिन यदि नहीं, तो गणितज्ञों में गोल्फ के लिए युक्तियाँ पढ़ने के लिए दिलचस्प हो सकती हैं। यहां रहने का आनंद! :)
केविन क्रूज़सेन

1
आप अपने आप को मिल जाए के घटकों तक पहुँचने #से ज्यादा #ही है, आप का उपयोग करके बाइट्स का एक बहुत बचा सकता है Apply( @@@) के बजाय Map( /@):#^#2&@@@If...
मार्टिन Ender

1

PHP, 62 बाइट्स

कुंजी के रूप में प्राइम के साथ एक सहयोगी सरणी प्रिंट करता है और कितनी बार प्राइम को मूल्य के रूप में उपयोग किया जाता है और इनपुट के लिए कुछ भी नहीं है 1

for($i=2;1<$n=&$argn;)$n%$i?++$i:$n/=$i+!++$r[$i];print_r($r);

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

के लिए आउटपुट 60

Array
(
    [2] => 2
    [3] => 1
    [5] => 1
)

PHP, 82 बाइट्स

for($i=2;1<$n=&$argn;)$n%$i?++$i:$n/=$i+!($r[$i]=$r[$i]?$r[$i]*$i:$i);print_r($r);

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

1यदि आप इसके बजाय खाली सरणी की इच्छा रखते हैं तो इनपुट के लिए कुछ भी प्रिंट नहीं करता है और एक क्रमबद्ध सरणी यह ​​थोड़ी लंबी होगी

for($r=[],$i=2;1<$n=&$argn;)$n%$i?++$i:$n/=$i+!($r[$i]=$r[$i]?$r[$i]*$i:$i);sort($r);print_r($r);



0

मिनीएमएल , 47 बाइट्स

अभाज्य गुणनखंडन को शामिल करने वाली चुनौतियाँ यहाँ बहुत अधिक दर्शाई गई हैं, इसलिए हम सभी मानक पुस्तकालय में फैक्टराइजेशन के लिए दुखी हैं।

fun n->map(fun p->ipow(fst p)(snd p))(factor n)

ध्यान दें कि मिनिमल में 'मिनी' फीचर सेट के आकार को संदर्भित करता है, न कि इसमें लिखे सोर्स कोड का आकार।


0

रूबी, 61 बाइट्स

require 'prime'
->n{(2..n).select{|e|n/e.to_f%1==0&&e.prime?}}

मैं 6-7 बाइट समाधानों को देखने के बाद वास्तव में निराश हूं -))


0

गणितज्ञ, 24 बाइट्स

Power@@@FactorInteger@#&

बहुत बुरी @@@*बात नहीं है। इसके अलावा, मैं चाहता हूँ /@*, @@*और वास्तव में, परिवर्तन @@@करने के लिए /@@, //@करने के लिए @@@या जो कुछ भी और के अनंत परिवार को जोड़ने //@, ///@...

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.