गोल्डबैक के विभाजन में वृद्धि


9

गोल्डबैक अनुमान में कहा गया है कि:

प्रत्येक संख्या जो कि 2 से अधिक है, दो अपराधों का योग है।

हम एक संख्या n के गोल्बबैक विभाजन पर विचार करेंगे जो कि दो जोड़ियों की एक जोड़ी है जो n में जोड़ रहा है । हम गोल्डबेक विभाजन को बढ़ाने के लिए चिंतित हैं । हम उस संख्या के सभी विभाजनों में सबसे छोटे अभाज्य के आकार द्वारा संख्या के गोल्डबैक विभाजन का आकार मापते हैं। एक संख्या बढ़ते विभाजन की है यदि यह आकार सभी छोटे सम संख्याओं के आकार से अधिक है।

कार्य

यह भी एक पूर्णांक n> 2 को देखते हुए , यदि n गोल्डबैक विभाजन को बढ़ाता है, और दो अद्वितीय मानों को आउटपुट करता है, एक यदि यह है और एक ऐसा नहीं है।

ये है , इसलिए आपको अपने स्रोत कोड में बाइट्स की संख्या को कम करने का लक्ष्य रखना चाहिए।

OEIS A025018



यह अच्छा सवाल है, जिसे समझना मुश्किल है। मैंने इसे शब्दांकन को सरल बनाने के लिए संपादित किया। कृपया इसे जांचें और यदि सब सही है तो परिवर्तन लागू करें।
Julвгений Новиков

1
@ IвгенийНовиков मैं पाया गया कि आपके संपादन को मूल से अधिक भ्रमित किया गया। मैंने इसे अस्वीकार कर दिया है। शायद हम यहां इसे स्पष्ट करने के तरीके पर चर्चा कर सकते हैं
तदर्थ गार्फ हंटर

काम किए गए उदाहरण अभी भी बहुत भ्रमित हैं - वे संख्याओं को कहीं से भी खींचते प्रतीत होते हैं, और प्रत्येक तुलनाओं को अलग-अलग तरीके से यह बताए बिना व्यक्त किया जाता है कि कुछ संख्याओं का उपयोग क्यों किया जाता है। यदि आप पहले से ही उत्तर जानते हैं, तो आप इसका पता लगा सकते हैं। । । जो मैंने पहले पैराग्राफ में वापस जाकर किया, उदाहरणों को अनदेखा करना जब तक कि यह स्पष्ट नहीं था, तब यह पता लगाना कि उदाहरणों का निर्माण कैसे किया गया था। शायद कुछ सारणीबद्ध संरचना मदद करेगी, जिसमें 10 भी शामिल हैं, शायद मदद करेगी
नील स्लेटर

@NeilSlater प्रतिक्रिया के लिए धन्यवाद। मैंने उदाहरण पूरी तरह से हटा दिए हैं क्योंकि मुझे लगता है कि वे अच्छे से अधिक नुकसान कर रहे थे। मुझे लगता है कि स्पष्टीकरण से चुनौती स्पष्ट है, और उदाहरण केवल चीजों को जटिल करते हैं। यदि स्पष्टीकरण पर्याप्त नहीं है तो मैं उस पर विस्तार या स्पष्टीकरण करने के लिए अधिक से अधिक खुश होऊंगा, लेकिन मुझे नहीं लगता कि मैं उदाहरणों को वापस जोड़ूंगा क्योंकि वे अब तक भ्रम का सबसे बड़ा स्रोत प्रतीत होते हैं।
तदर्थ गार्फ हंटर

जवाबों:


5

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

ÆRðfạṂ
Ç€M⁼W

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

यह काम किस प्रकार करता है

Ç€M⁼W   Main link. Argument: n

Ç€      Map the helper link over [1, ..., n].
  M     Get all indices of the maximum.
    W   Wrap; yield [n].
   ⁼    Test the results to both sides for equality.


ÆRðfạṂ  Helper link. Argument: k

ÆR      Prime range; get all primes in R := [1, ..., k].
  ð     Begin a dyadic chain with arguments R and k.
    ạ   Absolute difference; yield k-p for each p in R.
   f    Filter; keep the q in R such that q = k-p for some p in R.
     Ṃ  Take the minimum.
        This yields 0 if the array is empty.

4

PHP , 154 बाइट्स

for(;$n++<$a=$argn;$i-1?:$p[]=$n)for($i=$n;--$i&&$n%$i;);foreach($p as$x)foreach($p as$y)if(!$r[$z=$x+$y]){$r[$z]=$x;$l[]=$z<$a?$x:0;};echo$r[$a]>max($l);

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

विस्तारित

for(;$n++<$a=$argn;$i-1?:$p[]=$n) # loop through all integers till input if is prime add to array 
  for($i=$n;--$i&&$n%$i;);
foreach($p as$x) #loop through prime array
  foreach($p as$y) #loop through prime array 
    if(!$r[$z=$x+$y]){
      $r[$z]=$x; # add only one time lower value for a sum of $x+$y 
      $l[]=$z<$a?$x:0;}; # add lower value if sum is lower then input
echo$r[$a]>max($l); # Output 1 if lower value for sum of input is greater then all lower values of all numbers under input

इसे ऑनलाइन आज़माएं! 1000 तक सभी नंबरों की जांच करें


3

जावास्क्रिप्ट (ईएस 6), 135 बाइट्स

Jörg के PHP उत्तर के समान तर्क का उपयोग करता है ।

(n,P=[...Array(n).keys()].filter(n=>(p=n=>n%--x?p(n):x==1)(x=n)))=>P.map(p=>P.map(q=>a[q+=p]=a[q]||(m=q<n&&p>m?p:m,p)),a=[m=0])&&a[n]>m

डेमो


2

पायथन 3: 156 151 142 138 136 128 बाइट्स

r=range
m=lambda n:min(x for x in r(2,n+1)if all(o%i for o in[x,n-x]for i in r(2,o)))
f=lambda n:m(n)>max(map(m,r(2,n,2)))or n<5

(ओपी को धन्यवाद)

(@Rod का धन्यवाद) (फिर) (और फिर से)


@ ऑलमैन क्या आपको यह पसंद है?
19

@ के बाद maxसे कुंजी रिटर्न तत्व के साथ कुंजी लागू करने के बाद अधिकतम मूल्य के साथ, मैं समारोह आवेदन जोड़ना था, लेकिन यह फिर भी कम है।
enedil

@Rod और मैं आपके सुझाव नहीं ले सकता rangeक्योंकि nअंदर से बंधा हुआ है lambda
19

@ENil वास्तव में, लेकिन अधिकतम के लिए, आप उपयोग कर सकते हैंmax(map(m,r[::2]))
रॉड

1
आपको नाम की आवश्यकता नहीं है fऔर इस प्रकार 2 बाइट्स को हटाकर बचा सकता है f=
तदर्थ गार्फ हंटर

1

पायथन 3: 204 196 बाइट्स

बाइट्स ने धन्यवाद को बचाया: ओल्म मैन

from itertools import*
m=lambda g:min([x for x in product([n for n in range(2,g)if all(n%i for i in range(2,n))],repeat=2)if sum(x)==g][0])
i=lambda g:1if all(m(g)>m(x)for x in range(4,g,2))else 0

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


2
कुछ युक्तियां, अधिकांश बिल्टइन जैसे कार्य करता है minऔर allजनरेटर को तर्क के रूप में ले सकता है, इसका मतलब सभी के साथ और उसी के min([...])लिए छोटा किया जा सकता है min(...)। आप कुछ स्थानों, विशेष रूप से import *और ब्रेसिज़ के बाद के किसी भी स्थान से छुटकारा पा सकते हैं , मैं देखता हूं कि आपके पास एक के बाद range(g)एक है और [i for i in ...न ही पहले आवश्यक है।
तदर्थ गार्फ हंटर

^ यह कमाल है, मुझे नहीं पता था कि
bendl

इसके अलावा, आप इसे बदलकर अपने प्राइम चेक को थोड़ा छोटा कर सकते हैं all(n%i for i in range(2,g)), लेकिन आपको इसे बदलना range(g)होगा range(1,g)क्योंकि यह 1 पर गलत पॉजिटिव देता है।
Ad Hoc Garf Hunter
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.