ค่าคงตัวของ Brun โดยประมาณ


25

ค่าคงที่ของ Brunคือค่าที่ผลรวมของส่วนกลับของคู่นายกรัฐมนตรีคู่ ( 1/pและ1/(p+2)ที่ไหนpและp+2ทั้งสองยอดรวมกัน) 1.902160583104มันจะอยู่ที่ประมาณ

ได้รับจำนวนเต็มบวกค่าNคงที่โดยประมาณของ Brun โดยการรวมส่วนกลับของคู่นายกรัฐมนตรีคู่ที่ทั้งคู่ในคู่มีค่าน้อยกว่า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

เศษส่วนที่แน่นอนสามารถส่งออกได้หรือไม่
LegionMammal978

@ LegionMammal978 ใช่ฉันจะอธิบาย
Mego

หมายเหตุด้านข้าง: ค่า 1.902160583104 ... สำหรับค่าคงที่ของ Brun นั้นคาดเดาได้เท่านั้น ไม่ใช่แม้แต่ตัวเลขนัยสำคัญแรกที่ได้รับการคำนวณอย่างเข้มงวด (นั่นคือมันไม่รู้ด้วยซ้ำว่าสูงกว่าหรือน้อยกว่า 2)
Greg Martin

@GregMartin แม้ว่ามันจะเป็นจริง แต่ก็เป็นวิธีที่ดีที่สุดที่เรามีในขณะนี้
Mego

5 เป็นนายกคนเดียวที่ปรากฏในคู่ที่สำคัญสองคน
Christian Sievers

คำตอบ:


25

Python 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)

ขอบคุณ @xnor สำหรับการตีกอล์ฟ2 4 ไบต์และปูทางไปอีก 4 ลูก!

ลองออนไลน์!

พื้นหลัง

จำได้ว่าวิลสันทฤษฎีบทของรัฐว่า integers ทั้งหมดk> 1 ,

ที่≡ข (สมัยง)หมายความว่าa - bหารเท่า ๆ กันโดยdคือและBมีสารตกค้างเดียวกันเมื่อหารด้วยd

ในทฤษฎีบทของวิลสันสำหรับ Double-, Hyper-, Sub- และ Super-factorialsผู้เขียนพิสูจน์ภาพรวมของแฟคทอเรียลคู่ซึ่งคำตอบนี้สร้างขึ้น ปัจจัยคู่ของจำนวนเต็มk ≥ 0จะถูกกำหนดโดย

ทฤษฎีบทที่ 4 ของกระดาษข้างต้นระบุดังต่อไปนี้

การยกระดับความสอดคล้องทั้งสองด้านให้เท่ากับกำลังสี่เราอนุมานได้ว่า

สำหรับช่วงเวลาที่แปลกทั้งหมดp . ตั้งแต่1 !! = 1 , ความเท่าเทียมถือยังp = 2

ทีนี้การทำเช่นเดียวกันกับทฤษฎีของวิลสันก็เผยให้เห็น

ตั้งแต่

มันเป็นไปตามนั้น

เมื่อใดก็ตามที่pเป็นนายก

ตอนนี้ให้kเป็นจำนวนเต็มคี่บวกและเชิงบวก ตามคำนิยามมีอยู่ integers A, B> 1ดังกล่าวที่k = AB

ตั้งแต่kเป็นเลขคี่ดังนั้นและข ดังนั้นทั้งคู่จึงเกิดขึ้นในลำดับที่1, 3, …, k - 2และ

ที่ไหน| หมายถึงการหาร

สรุปสำหรับจำนวนเต็มคี่ทั้งหมดk> 1

โดยที่p (k) = 1ถ้าkเป็นจำนวนเฉพาะและp (k) = 0ถ้าkประกอบกัน

มันทำงานอย่างไร

เมื่อฟังก์ชั่นเรียกว่ามีเพียงหนึ่งเดียวอาร์กิวเมนต์k , และเจจะเริ่มต้นเป็น3 , 1และ0

โปรดทราบว่า((k - 2) !!) 4 = 1 !! 4 = 1 = m อันที่จริงความเสมอภาคm = ((k - 2) !!) 4จะถืออยู่ตลอดเวลา Jเป็นลอยและมักจะเท่ากับ((k - 4) !!) 4 % (k - 2) / (k - 2)

ในขณะที่k <nอาร์กิวเมนต์ที่ถูกต้องandจะได้รับการประเมิน ตั้งแต่j = ((k - 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ถ้าไม่ ดังนั้น-m%k*j*2/kประเมินเป็น2 (k - 1) / (k (k - 2)) = ((k - 2) + k) / (k (k - 2)) = 1 / k + 1 / (k - 2)ถ้าทั้งคู่(k - 2, k)ประกอบด้วยช่วงเวลาแฝดและ0หากไม่ได้

f(n,k+2,m*k**4,m%k/k)หลังจากการคำนวณข้างต้นเราเพิ่มผลให้ค่าตอบแทนของโทร recursive kเพิ่มขึ้น2ดังนั้นมันจึงใช้ค่าคี่เท่านั้น‡‡เราคูณmด้วยk 4ตั้งแต่mk 4 = ((k - 2) !!) 4 k 4 = (k !!) 4และผ่านค่าปัจจุบันของm% k / k - ซึ่งเท่ากับ1 / kถ้า "old" kเป็นค่าเฉพาะและ0ถ้าไม่ใช่ - เป็นพารามิเตอร์jสำหรับการเรียกใช้ฟังก์ชัน

สุดท้ายเมื่อkเท่ากับหรือมากกว่าn , Fจะกลับเท็จหยุดและเรียกซ้ำ ค่าส่งคืนของf (n)จะเป็นผลรวมของ1 / k + 1 / (k - 2)เช่น(k - 2, k)เป็นคู่คู่ที่สำคัญและk <nตามที่ต้องการ


ผลลัพธ์จากย่อหน้าพื้นหลังมีไว้สำหรับจำนวนเต็มคี่เท่านั้น เนื่องจากจำนวนเต็มไม่สามารถเป็นช่วงเวลาแฝดเราจึงสามารถข้ามได้อย่างปลอดภัย


m%k*(j/k+j/(k-2))ผมคิดว่าการแสดงออกของคุณเป็นเช่นเดียวกับ
xnor

ใช่มันใช้ได้ผล ขอบคุณ!
เดนนิส


สังเกตที่ดีที่((k-2)!!)^4 = p(k)โมดูโลสำหรับคี่p pฉันไม่ได้ผ่านการโต้เถียงของคุณ แต่นี่คือสิ่งที่ฉันคิดขึ้นมา (นั่นอาจเป็นสาระสำคัญเดียวกัน) ทำงานแบบโมดูโลpในเซตฉาก{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

ดี! ฉันพยายามแสดงผลรวมเป็นเศษส่วนเดียว แต่การคำนวณส่วนหนึ่งในjไม่ได้เกิดขึ้นกับฉัน ขอบคุณอีกครั้ง! หลักฐานของคุณง่ายกว่ากระดาษมาก
Dennis

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 ไบต์ (ด้วยความช่วยเหลือเล็กน้อยจาก @Dennis)

’Æ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จะกลายเป็น
Dennis

4

Brachylog ขนาด 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

Mathematica, 48 47 ไบต์

ขอบคุณ JungHwan Min ที่ช่วยประหยัด 1 ไบต์!

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

ฉันสงสัยว่า "ส่วนที่แน่นอน" หมาย Mathematica :)
เกร็กมาร์ติน

-1 ไบต์:If[PrimeQ/@(i&&(g=i-2)),1/i+1/g,0]~Sum~{i,#-1}&
JungHwan Min

หนึ่งสามารถรับจำนวนความแม่นยำโดยการเพิ่มสองไบต์N@หน้ารหัส
JungHwan Min

การตีกอล์ฟที่ดีของเงื่อนไข! เป็นความจริงที่Nส่งกลับค่าทศนิยมโดยประมาณเป็นจำนวนจริง อย่างไรก็ตามต้องใช้ไบต์พิเศษในการแสดงมากกว่า 6 sig fig หรือมากกว่านั้นและไม่ว่าจะมีกี่ sig fig ที่แสดงมันก็ยังมีความแม่นยำน้อยกว่าเศษส่วน
Greg Martin

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

JavaScript (ES6), 67 66 ไบต์

บันทึกแล้ว 1 ไบต์ขอบคุณ @Arnauld

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บันทึกเป็นไบต์
Arnauld

@ Arnauld ขอบคุณ ด้วยเหตุผลบางอย่างฉันไม่ทราบว่า+++จะไม่เกิดข้อผิดพลาดเสมอไป ...
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

Perl 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เลือกเพียงคู่เหล่านั้นที่ทั้งหมด (นั่นคือทั้งสอง) ตัวเลขสำคัญและflatflattens ให้เป็นรายการธรรมดาของตัวเลข

«/»คือ hyperoperator ส่วน; ที่มีรายชื่ออยู่ด้านขวาและด้านซ้ายก็จะเปิดรายการของคู่สำคัญลงไปในส่วนกลับของพวกเขาซึ่งเป็นที่สรุปแล้วโดย1sum


1

Clojure, 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)))))

และ Clojure ก็ตายเป็นคนสุดท้ายตามปกติ

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

ยูทิลิตีBash + GNU ขนาด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เพื่อประเมินค่า

แก้ไข: หลงผิดในคู่ $ (... ) จากเวอร์ชันเก่าที่มีการทดแทนคำสั่งซ้อน เปลี่ยนเป็น backticks เพื่อบันทึก byte


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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.