अनुमानित ब्रून कांस्टेंट


25

ब्रून की स्थिरांक वह मूल्य है जिसके जुड़वाँ प्राइम जोड़े ( 1/pऔर 1/(p+2)जहां pऔर p+2दोनों प्रमुख हैं) के पारस्परिक के योग हैं। यह लगभग है 1.902160583104

एक सकारात्मक पूर्णांक को देखते हुए N, जुड़वां प्रमुख जोड़ियों के पारस्परिक योगों द्वारा ब्रून के स्थिरांक को देखा जाता है, जहां जोड़ी में दोनों ही प्राइमर कम हैं N, और सन्निकटन का उत्पादन करते हैं।

नियम

  • N आपकी भाषा के लिए प्रतिनिधित्व योग्य सीमा के भीतर एक सकारात्मक पूर्णांक होगा।
  • आउटपुट आपकी भाषा के फ़्लोटिंग-पॉइंट कार्यान्वयन की सीमाओं के भीतर सही मूल्य पर यथासंभव सटीक होना चाहिए, फ़्लोटिंग पॉइंट अंकगणितीय अशुद्धियों के कारण किसी भी संभावित मुद्दों की अनदेखी करना। यदि आपकी भाषा मनमानी-सटीक अंकगणित करने में सक्षम है, तो यह कम से कम IEEE 754 डबल-सटीक अंकगणित के समान सटीक होना चाहिए।
  • वैकल्पिक रूप से, एक सटीक अंश किसी भी सुसंगत, अस्पष्ट प्रारूप में आउटपुट हो सकता है।
  • कई जुड़वां प्रधानमंत्री जोड़े (उदाहरण के लिए में एक प्रमुख प्रकट होता है 5, दोनों के हिस्से (3, 5)और (5, 7)योग करने के लिए), अपने पारस्परिक योगदान हर बार।

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

2 -> 0
6 -> 0.5333333333333333
10 -> 0.8761904761904762
13 -> 0.8761904761904762
100 -> 1.3309903657190867
620 -> 1.4999706034568274
100000 -> 1.67279958482774

क्या एक सटीक अंश आउटपुट हो सकता है?
लीजनमोनियल 978

@ LegionMammal978 हाँ, मैं स्पष्ट करूँगा।
मेगो

साइड नोट: 1.902160583104 ... ब्रून स्थिरांक के लिए मूल्य केवल अनुमान है; यहां तक ​​कि पहले महत्वपूर्ण आंकड़े को कड़ाई से गणना नहीं की गई है (अर्थात, यह भी ज्ञात नहीं है कि यह 2 से अधिक है या कम है)।
ग्रेग मार्टिन

@GregMartin जबकि यह सच है, यह भी सबसे अच्छा सन्निकटन है जो वर्तमान में हमारे पास है।
मेगो

5 एकमात्र प्रधान है जो दो प्रमुख जोड़ियों में दिखाई देता है
क्रिश्चियन सेवर्स

जवाबों:


25

पायथन 3 , 78 77 75 70 68 62 बाइट्स

f=lambda n,k=3,m=1,j=0:k<n and-m%k*j*2/k+f(n,k+2,m*k**4,m%k/k)

2 4 बाइट को बंद करने के लिए @xnor को धन्यवाद और 4 और के लिए मार्ग प्रशस्त!

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

पृष्ठभूमि

याद रखें कि विल्सन की प्रमेय में कहा गया है कि सभी पूर्णांकों के लिए k> 1 ,

जहाँ - b (mod d) का अर्थ है कि a - b , d से समान रूप से विभाज्य है , अर्थात a और b का d से विभाजित होने पर समान अवशेष है ।

में डबल, अति, उप और सुपर factorials के लिए विल्सन प्रमेयों , लेखकों डबल factorials, जिस पर इस जवाब बनाता है के लिए सामान्यीकरण साबित होते हैं। दोहरा भाज्य एक पूर्णांक के कश्मीर ≥ 0 से परिभाषित किया गया है

उपर्युक्त पत्र के प्रमेय 4 निम्नलिखित बताता है।

चौथी शक्ति के लिए बधाई के दोनों किनारों को ऊपर उठाते हुए, हम इसे घटाते हैं

सभी विषम pr के लिए p1 के बाद से !! = 1 , तुल्यता p = 2 के लिए भी रखती है ।

अब, विल्सन के प्रमेय के साथ भी ऐसा करने से पता चलता है

जबसे

यह इस प्रकार है कि

जब भी पी प्राइम होता है।

अब, k को एक विषम, धनात्मक, पूर्णांक पूर्णांक बनाते हैं। परिभाषा के अनुसार, पूर्णांक मौजूद है, b> 1 ऐसा कि k = ab

चूंकि k विषम है, इसलिए a और b हैं । इस प्रकार, दोनों क्रम 1, 3,…, k - 2 और में होते हैं

कहाँ | विभाज्यता इंगित करता है।

सभी विषम पूर्णांक k> 1 के लिए योग करना

जहाँ p (k) = 1 यदि k अभाज्य है और p (k) = 0 यदि k संमिश्र है।

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

जब फ़ंक्शन f को एकल तर्क के साथ कहा जाता है, k , m , और j को 3 , 1 , और 0 के रूप में आरंभ किया जाता है ।

ध्यान दें कि ((- - २) !!) = १ !! 4 = 1 = मी । वास्तव में, समानता m = ((k - 2) !!) 4 हर समय आयोजित होगी। j एक फ्लोट है और हमेशा ((- 4) !!) 4 % (k - 2) / (k - 2) के बराबर होगा ।

जबकि k <n , के सही तर्क का andमूल्यांकन किया जाएगा। चूंकि j = (((- - 4) !!) 4 % (k - 2) / (k - 2) , जैसा कि पहले पैराग्राफ में सिद्ध होता है, j = 1 / (k - 2) यदि k - 2 प्रधान है और j = 0 यदि नहीं। इसी तरह, चूंकि m% k = (((k - 2) !!) 4 बराबर 1 है यदि k अभाज्य है और 0 यदि नहीं, -m% k = k - 1 यदि k अभाज्य है और -m% k = 0 यदि नहीं है। इसलिए, 2 (k - 1) / (k (2 -)) = (((- 2) + k) / (k (k - 2)) = 1 / k + 1 / (k - 2) का-m%k*j*2/k मूल्यांकन करता है अगर जोड़ी (k - 2, k)जुड़वाँ प्राइम्स होते हैं और 0 नहीं तो।

उपरोक्त गणना करने के बाद, हम परिणाम को पुनरावर्ती कॉल के वापसी मूल्य में जोड़ते हैं f(n,k+2,m*k**4,m%k/k)कश्मीर से वृद्धि हो जाता है 2 तो यह केवल अजीब मानों का उपयोग ‡ † , हम गुणा मीटर से कश्मीर 4 के बाद से mk 4 = ((कश्मीर - 2) !!) 4 कश्मीर 4 = (k !!) 4 , और के वर्तमान मूल्य से पारित m% k / k - जो कि 1 / k के बराबर है यदि "पुराना" k एक अभाज्य है और 0 नहीं तो - फंक्शन कॉल के लिए पैरामीटर j के रूप में ।

अंत में, एक बार k , n के बराबर या उससे अधिक होगा , तो F झूठी लौटेगा और पुनरावृत्ति रुक ​​जाएगी। के रिटर्न मान च (एन) सभी का योग होगा - 1 / k + 1 / (2 ट) इस तरह के (k - 2, ट) एक जुड़वां प्रधानमंत्री जोड़ी और है कश्मीर <n , के रूप में वांछित।


Results पृष्ठभूमि पैराग्राफ से परिणाम केवल अजीब पूर्णांक के लिए पकड़। चूँकि पूर्णांक भी जुड़वां अपराध नहीं हो सकते हैं, हम उन्हें सुरक्षित रूप से छोड़ सकते हैं।


मुझे लगता है कि आपकी अभिव्यक्ति समान है m%k*(j/k+j/(k-2))
xnor

हां, वह काम करता है। धन्यवाद!
डेनिस


अच्छा अवलोकन कि विषम के लिए ((k-2)!!)^4 = p(k)modulo । मैंने आपके तर्क के माध्यम से काम नहीं किया है, लेकिन यहां एक मैं आया हूं (जो कि समान रूप से हो सकता है)। सेट में काम करने वाले मॉडुलो , बुराइयों के बिल्कुल नकारात्मक हैं। तो, । विल्सन के प्रमेय हमें बताता है कि । चूंकि , हमारे पास ऐसा है । ppp{1,2,..,p-1}prod(odds) = ± prod(evens)prod(all) = - p(k)prod(all) = prod(odds) * prod(evens) = prod(odds) * ± prod(evens)prod(odds)^2 = ±p(k)prod(odds)^4 = p(k)^2 = p(k)
xnor

अच्छा! मैंने एक एकल अंश के रूप में राशि को व्यक्त करने की कोशिश की, लेकिन जम्मू में इसका कंप्यूटिंग हिस्सा मेरे पास नहीं था। एक बार फिर धन्यवाद! आपका प्रमाण कागज से एक की तुलना में बहुत सरल है।
डेनिस

7

जेली , 15 14 बाइट्स

’ÆRµ_2fµ+2;µİS

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

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

’ÆRµ_2fµ+2;µİS  Main link. Argument: n

’               Decrement; yield n-1.
 ÆR             Prime range; yield all primes in [1, ..., n-1].
   µ            New chain. Argument: r (prime range)
    _2          Subtract 2 from all primes.
      f         Filter; keep all p-2 that appear in r.
       µ        New chain. Argument: t (filtered range)
        +2      Add 2 to all primes in s.
          ;     Concatenate with s.
           µ    New chain. Argument: t (twin primes)
            İ   Take the inverses.
             S  Sum.

5

जेली , 16 14 बाइट्स (@ डेनिस की थोड़ी मदद से)

’ÆRṡ2_/2+$$ÐḟFİS

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

अपने पिछले उत्तर को बेहतर बनाने की कोशिश करते हुए, मैंने सोचा था कि एक पूरी तरह से अलग एल्गोरिथ्म है, और यह कुछ हद तक छोटा है। मैं इसके लिए एक अलग पोस्ट का उपयोग कर रहा हूं, जैसा कि एक उत्तर के लिए यहां मानक है जो एक अलग तकनीक का उपयोग करता है।

डेनिस के _/2+$$Ðḟसाथ की जगह का सुझाव Iċ¥Ðf2; मैं पूरी तरह से एक dyadic फ़िल्टर की संभावना के बारे में भूल गया था। इस प्रकार, यह एल्गोरिथ्म अब उसी के साथ मेल खाता है जिसका डेनिस ने उत्तर दिया था।

व्याख्या

’ÆRṡ2Iċ¥Ðf2FİS
’                  Decrement.
 ÆR                Primes from 2 to the argument inclusive
                   (i.e. 2 to the original input exclusive).
   ṡ2              Take overlapping slices of size 2.
        Ðf         Keep only elements where the following is true:
       ¥           {the second parse of, which parses like this}
     Iċ   2          the differences (I) contain (ċ) 2
           F       Flatten.
            İ      Take 1/x {for every list element}.
             S     Sum.

2_/2+$$Ðḟबन सकता है Iċ¥Ðf2
डेनिस

4

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

{>I-₂:I{ṗ/₁}ᵐ}ᶠc+

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

यह एक चमकदार कोड पेज के साथ, Brachylog का बिल्कुल नया संस्करण है!

व्याख्या

{            }ᶠ        Find all valid outputs of the predicate in brackets
               c+      Output is the sum of that list after flattening it

 >I                    Input > I
   -₂:I                The list [I-2, I]
       {   }ᵐ          Map:
        ṗ/₁              Must be prime and the output is its inverse

3

MATL , 16 बाइट्स

liqZqtd2=)t2+h/s

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

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

l     % Push 1
      %   STACK: 1
i     % Input N
      %   STACK: 1, 13
q     % Subtract 1
      %   STACK: 1, 12
Zq    % Primes up to that
      %   STACK: 1, [2 3 5 7 11]
t     % Duplicate
      %   STACK: 1, [2 3 5 7 11], [2 3 5 7 11]
d     % Consecutive differences
      %   STACK: 1, [2 3 5 7 11], [1 2 2 4]
2=    % Compare with 2, element-wise
      %   STACK: 1, [2 3 5 7 11], [0 1 1 0]
)     % Use as logical index to select elements from array
      %   STACK: 1, [3 5]
t     % Duplicate
      %   STACK: 1, [3 5], [3 5]
2+    % Add 2, element-wise
      %   STACK: 1, [3 5], [5 7]
h     % Concatenate horizontally
      %   STACK: 1, [3 5 5 7]
/     % Divide, element-wise
      %   STACK: [0.3333 0.2 0.2 0.1429]
s     % Sum of array. Implicitly display
      %   STACK: 0.8762

2

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

1 बाइट बचाने के लिए JungHwan Min को धन्यवाद!

If[PrimeQ/@(i&&(g=i-2)),1/i+1/g,0]~Sum~{i,#-1}&

इनपुट के रूप में एक सकारात्मक पूर्णांक ले रहा है और एक सटीक अंश लौटा रहा है; उदाहरण के लिए, If[PrimeQ/@(i&&(g=i-2)),1/i+1/g,0]~Sum~{i,#-1}&[10]रिटर्न 92/105

If[PrimeQ/@(i&&(g=i-2)),1/i+1/g,0]परीक्षण किया जाता है कि क्या दोनों iऔर i-2प्रधान हैं, 0यदि नहीं तो उनके पारस्परिक का योग लौटाएं । ~Sum~{i,#-1}&फिर iइनपुट से कम के सभी मूल्यों के लिए उन योगदानों का योग देता है ।

पिछला सबमिशन:

If[And@@PrimeQ@{i,g=i-2},1/i+1/g,0]~Sum~{i,#-1}&

अब यह सिर्फ डरावना है। मैं हार मानता हूं। ⚐
LegionMammal978

मुझे आश्चर्य हुआ कि क्या "सटीक अंश" का अर्थ है गणितज्ञ :)
ग्रेग मार्टिन

-1 बाइट:If[PrimeQ/@(i&&(g=i-2)),1/i+1/g,0]~Sum~{i,#-1}&
जंगवान मिन

N@कोड के सामने दो बाइट्स जोड़कर एक मनमानी-सटीक संख्या प्राप्त कर सकता है ।
जुंगह्वान मिन

हालत का अच्छा गोल्फ! यह सच है कि Nएक वास्तविक संख्या में दशमलव सन्निकटन लौटाता है; हालाँकि, इसे 6 से अधिक अंजीर या इससे अधिक प्रदर्शित करने के लिए अतिरिक्त बाइट्स की आवश्यकता होती है, और कितनी भी बड़ी अंजीर प्रदर्शित की जाती है, यह अभी भी अंश से कम सटीक है।
ग्रेग मार्टिन

2

ऑक्टेव, 45 बाइट्स

@(n)sum(all(isprime(m=[h=3:n-1;h-2]))*m'.^-1)

स्पष्टीकरण:

m=[h=3:n-1;h-2]             generate an concatenate two ranges 3:n-1 and 1:n-3
rec=m'.^-1                  transpose and reciprocal
idx=all(isprime(m))         create a logical [0 1 ..] array  if both ranges are prime set 1 else set 0
sum1 = idx * rec            matrix multiplication(extrat elements with logical index and sum along the first dimension)
sum(sum1)                   sum along the second dimension  

यह ऑनलाइन की कोशिश करो!


2

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

@Arnauld को 1 बाइट धन्यवाद दिया

f=n=>--n>1&&((p=x=>n%--x?p(x):x==1)(n)&&p(n-=2)&&1/n+++1/++n)+f(n)

falseपरीक्षण मामले के लिए आउटपुट 2, जिसकी अनुमति डिफ़ॉल्ट रूप से है

टेस्ट स्निपेट


मुझे लगता 1/n+++1/++nहै कि एक बाइट बचाता है।
अरनुलद

@ अरनुलद धन्यवाद किसी कारण से मुझे नहीं पता था कि हमेशा कोई त्रुटि +++नहीं होती है ...
ETHproductions


1

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

’ÆRḊµ_Æp=2Tịµ_2;µİS

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

मुझे लगता है कि यह कामचलाऊ है, लेकिन मैं तुरंत नहीं देख सकता कि कैसे।

व्याख्या

’ÆRḊµ_Æp=2Tịµ_2;µİS
 ÆR                  Generate all primes from 2 to n inclusive
’                    Subtract 1
   Ḋ                 Remove first element
’ÆRḊ                 Generate all primes from 3 to n-1 exclusive

     _Æp             Subtract the previous prime (i.e. calculate the prime gap)
        =2           Compare to 2
          Tị         Take elements of the input where the comparison is true
     _Æp=2Tị         Filter a list of primes to the latter halves of prime pairs

             _2      Subtract 2
               ;     Append
             _2;     Append the list to the list with 2 subtracted from it
                 İ   Take reciprocals
                  S  Sum
                 İS  Take the sum of the reciprocals

µकनेक्ट सब इन भागों को एक साथ पाइप लाइन शैली, प्रत्येक से पहले एक के उत्पादन लेने के अपने इनपुट के रूप में के साथ।



1

पर्ल 6 , 59 51 बाइट्स

{sum 1 «/»grep((*-(2&0)).is-prime,^$_).flatmap:{$_-2,$_}}

{sum 1 «/»grep(*.all.is-prime,(-2..*Z ^$_)).flat}

-2..* Z ^$_सूची का निर्माण -2, -1, 0, 1, ...करते हुए, सूची के साथ अनंत सूची को जोड़ देता है 0, 1, ... $_-1( $_फ़ंक्शन का तर्क) (-2, 0), (-1, 1), (0, 2), ..., ($_-3, $_-1)। (जाहिर है कि इनमें से कोई भी संख्या 3 से कम एक प्रमुख जोड़ी में हो सकती है, लेकिन 3..* Z 5..^$_कुछ बाइट्स से अधिक लंबी है, और अतिरिक्त संख्याओं में से कोई भी प्रमुख नहीं है।)

grepकेवल उन जोड़ियों का चयन करता है, जहां सभी (अर्थात, दोनों) संख्याएँ प्रधान हैं, और flatउन्हें संख्याओं की एक सादे सूची में समतल करती है।

«/»विभाजन हाइपरोपरेटर है; दाईं ओर और बाईं ओर सूची के साथ 1, यह मुख्य जोड़े की सूची को उनके पारस्परिक में बदल देता है, जिसे बाद में अभिव्यक्त किया जाता है sum


1

क्लोजर, 147 बाइट्स

(fn[n](let[p #(if(> % 2)(<(.indexOf(for[a(range 2 %)](mod % a))0)0))](reduce +(for[a(range 2 n)](if(and(p a)(p(- a 2)))(+(/ 1 a)(/ 1(- a 2)))0)))))

और क्लोजर हमेशा की तरह आखिरी बार आया।

Ungolfed:

; Returns the primality of a number.
(defn prime? [n]
  (if (> n 2)
    (< (.indexOf (for [a (range 2 n)] (mod n a)) 0) 0)))

; Calculates the actual Brun's Constant. ' (Stupid highlighter)
(defn brunsconst [n]
  ; Adds all of the entries together
  (reduce
    +
    ; For a in range(2, n):
    (for [a (range 2 n)]
      (let [b (- a 2)]
        ; If both a and a-2 are prime:
        (if (and (prime? a) (prime? b))
          ; Place (1/a + 1/a-2) on the array, else 0
          (+ (/ 1 a) (/ 1 b)) 0)))))


0

बैश + जीएनयू उपयोगिताओं, 86 85 बाइट्स

for((k=4;k<$1;k++,j=k-2)){ [ `factor $k $j|wc -w` = 4 ]&&x=$x+1/$k+1/$j;};bc -l<<<0$x

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

एक बड़ी अंकगणितीय अभिव्यक्ति का निर्माण करता है और फिर उसका bc -lमूल्यांकन करने के लिए उसे फीड करता है।

संपादित करें: गलती से नेस्टेड कमांड प्रतिस्थापन के साथ एक पुराने संस्करण से एक $ (...) जोड़ी में छोड़ दिया गया; एक बाइट को बचाने के लिए बैकटिक्स में बदल गया।


0

APL NARS, 216 बाइट्स, 108 वर्ण

  r←z n;h;i;k;v
  i←0⋄n-←1⋄h←1+⍳n-1⋄→B
A:k←i⊃h⋄h←k∪(0≠k∣h)/h
B:→A×⍳(⍴h)≥i+←1
  r←+/÷(v-2),v←(h=1⌽h+2)/h

यह "Crivello di Eratostene" का उपयोग करने के लिए अनुरोध सूची में 1..arg में सबलिस्ट को खोजेगा। परीक्षा:

  z¨2 6 10 13 100 620
0 0.5333333333 0.8761904762 0.8761904762 1.330990366 1.499970603 
  z 100000
1.672799585
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.