มันยอดเยี่ยมหรือไม่?


22

พื้นหลัง

ซุปเปอร์สำคัญเป็นจำนวนเฉพาะที่มีดัชนีในรายการของจำนวนเฉพาะทั้งหมดยังเป็นนายก ลำดับมีลักษณะดังนี้:

3, 5, 11, 17, 31, 41, 59, 67, 83, 109, 127, 157, 179, 191, ...

นี่คือA006450 ลำดับใน OEIS

ท้าทาย

รับจำนวนเต็มบวกกำหนดว่าเป็นยอดเยี่ยม

กรณีทดสอบ

2: เท็จ
3: จริง
4: เท็จ
5: จริง
7: เท็จ
11: จริง
13: เท็จ
17: จริง
709: จริง
851: เท็จ
991: จริง

เกณฑ์การให้คะแนน

นี่คือดังนั้นคำตอบที่สั้นที่สุดในแต่ละภาษาจะเป็นผู้ชนะ


6
ดัชนี2คืออะไร? มันเป็น1หรือ0 ?
Dennis

1
@Dennis ลำดับเป็นดัชนี 1; ดัชนีของ 2 คือ 1
musicman523

2
ความคิดแรกหลังจากอ่านสิ่งที่ยอดเยี่ยมที่สุดคืออะไรคุณจะเรียกสิ่งที่ว่าอะไรเป็นพิเศษ หรือ super ^ 3-primes อะไรคือใหญ่กว่าจำนวนอะตอมในจักรวาลหรือ 11 สุดยอด ^ 11 นายกรัฐมนตรี? คุณคนที่รักอินเทอร์เน็ตกำลังขโมยเวลาส่วนตัวของฉันอีกสองสามชั่วโมง!
J_F_B_M

@J_F_B_M สร้างความท้าทายโดยอ้างอิงจากมัน! : D
musicman523

1
@J_F_B_M 11 เป็นซุปเปอร์ไพร์มซึ่งเป็นดัชนีในรายการซุปเปอร์ไพร์มนั้นก็เป็นซูเปอร์ไพร์ม (3) ดังนั้นซุปเปอร์ไพร์มที่ 11 สุดเป็นซุปเปอร์ไพร์มซุปเปอร์
Skidsdev

คำตอบ:


21

เยลลี่ 5 ไบต์

ÆRÆNċ

ลองออนไลน์!

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

ÆRÆNċ  Main link. Argument: n

ÆR     Prime range; yield the array of all primes up to n.
  ÆN   N-th prime; for each p in the result, yield the p-th prime.
    ċ  Count the occurrences of n.

8
เอ้ยมันคุณชนะอีกครั้ง ...
ETHproductions

3
เขามักจะทำ ...
Gryphon - Reinstate Monica

@ ETHproductions ทีนี้วิธีแก้ก็ค่อนข้างชัดเจน ... มันเป็นแค่นินจานี่
Erik the Outgolfer

14

Mathematica, 26 23 ไบต์

ขอบคุณ user202729 สำหรับการบันทึก 3 ไบต์

PrimeQ/@(#&&PrimePi@#)&

สิ่งนี้ใช้ประโยชน์จากความจริงที่ว่า Mathematica ทำให้การแสดงออกที่ไร้สาระส่วนใหญ่ไม่ได้รับการประเมิน (ในกรณีนี้คือตรรกะAndของตัวเลขสองตัว) และMapสามารถนำไปใช้กับนิพจน์ใด ๆ ดังนั้นเราคำนวณค่าAndของอินพุทและดัชนีเฉพาะของมันซึ่งยังคงเป็นแบบนั้นและจากนั้นเราMapทดสอบพหุนามเกี่ยวกับนิพจน์นี้ซึ่งเปลี่ยนโอเปอเรเตอร์ทั้งสองให้Andเป็นบูลีนเช่นนั้นAndสามารถประเมินได้


1
23 PrimeQ/@(#&&PrimePi@#)&ไบต์:
user202729

@ user202729 ดีขอบคุณ :)
Martin Ender

10

เยลลี่ 6 ไบต์

ÆRi³ÆP

ลองออนไลน์!

ใช้เทคนิคเดียวกับคำตอบ Japt ของฉัน: สร้างจำนวนเฉพาะได้สูงสุดn , รับดัชนีของnในรายการนั้นและตรวจสอบสิ่งนั้นเพื่อความเป็นอันดับหนึ่ง ถ้าnตัวเองไม่ได้เป็นคนสำคัญดัชนีก็คือ0ซึ่งก็ไม่ได้เป็นตัวหลักดังนั้นจะส่งคืนค่า0


9

Japt , 13 11 ไบต์

õ fj bU Ä j

ทดสอบออนไลน์!

คำอธิบาย

นี่เป็นสิ่งที่ตรงไปตรงมามากซึ่งแตกต่างจากเอกสารต้นฉบับของฉัน:

 õ fj bU Ä  j    
Uõ fj bU +1 j    Ungolfed
                 Implicit: U = input integer
Uõ               Generate the range [1..U].
   fj            Take only the items that are prime.
      bU         Take the (0-indexed) index of U in this list (-1 if it doesn't exist).
         +1 j    Add 1 and check for primality.
                 This is true iff U is at a prime index in the infinite list of primes.
                 Implicit: output result of last expression

4

Python 3 , 104 97 93 ไบต์

p=lambda m:(m>1)*all(m%x for x in range(2,m))
f=lambda n:p(n)*p(len([*filter(p,range(n+1))]))

ผลตอบแทน0/ 1ที่มากที่สุด 4 ไบต์อีกต่อไปหากมันจะต้องมี/TrueFalse

ลองออนไลน์!


1
0/1 ไม่เป็นไร คำตอบที่ดี! เนื่องจากคุณไม่เคยใช้ค่าของfคุณสามารถฟอร์แมตรหัสของคุณเช่นนี้และไม่รวมจากการนับไบต์
musicman523

@ musicman523 ขอบคุณสำหรับเคล็ดลับ!
C McAvoy

3

เยลลี่ขนาด 7 ไบต์

ÆCÆPaÆP

ลองออนไลน์!

ÆCนับจำนวนช่วงเวลาที่น้อยกว่าหรือเท่ากับอินพุท (ดังนั้นหากอินพุทเป็นจำนวนเฉพาะที่nจะส่งคืนn ) จากนั้นÆPทดสอบดัชนีนี้เพื่อความเป็นอันดับหนึ่ง ในที่สุดaก็ให้ตรรกะและระหว่างผลลัพธ์นี้และÆP(ทดสอบแบบดั้งเดิม) ของอินพุตต้นฉบับ



2

05AB1E , 6 ไบต์

ÝØ<Øså

ลองออนไลน์!

คำอธิบาย

ÝØ<Øså
Ý      # Push range from 0 to input
 Ø     # Push nth prime number (vectorized over the array)
  <    # Decrement each element by one (vectorized)
   Ø   # Push nth prime number again
    s  # swap top items of stack (gets input)
     å # Is the input in the list?




1

QBIC , 33 ไบต์

~µ:||\_x0]{p=p-µq|~q=a|_xµp]q=q+1

คำอธิบาย

~   |   IF   ....  THEN (do nothing)
  :         the number 'a' (read from cmd line) 
 µ |        is Prime
\_x0        ELSE (non-primes) quit, printing 0
]           END IF
{           DO
            In this next bit, q is raised by 1 every loop, and tested for primality. 
            p keeps track of how may primes we've seen (but does so negatively)
    µq|     test q for primality (-1 if so, 0 if not)
p=p-        and subtract that result from p (at the start of QBIC: q = 1, p = 0)
~q=a|       IF q == a
_xµp        QUIT, and print the prime-test over p (note that -3 is as prime as 3 is)
]           END IF
q=q+1       Reaise q and run again.


1

Haskell, 121 ไบต์

f=filter
p x=2==(length$f(\a->mod(x)a==0)[1..x])
s=map(\(_,x)->x)$f(\(x,_)->p x)$zip[1..]$f(p)[2..]
r x=x`elem`(take x s)

1
(\(_,x)->x)เป็นsnd, เป็น(\(x,_)->p x) (p.fst)ทั้งสองfstและsndอยู่ในโหมโรงดังนั้นไม่จำเป็นต้องนำเข้า
Laikoni

อย่าใช้ backticks บ่อยเกินไปr x=elem x$take x s : อย่างไรก็ตามในกรณีนี้คุณสามารถไป pointfree (แนะนำ backticks อีกครั้ง) elem<*>(`take`s)และงดชื่อฟังก์ชัน:
nimi



1

Matlab, 36 34 ไบต์

บันทึก 2 ไบต์ขอบคุณ Tom Carpenter

การติดตั้งที่ไร้เดียงสาโดยใช้ฟังก์ชั่นในตัว:

isprime(x)&isprime(nzz(primes(x)))

1
สำหรับ Octave เท่านั้นคุณยังสามารถบันทึกไบต์ต่อไปด้วย(p=@isprime)(x)&p(nnz(primes(x)))
Tom Carpenter

1

Python 2 , 89 ไบต์

def a(n):
 r=[2];x=2
 while x<n:x+=1;r+=[x]*all(x%i for i in r)
 return{n,len(r)}<=set(r)

ลองออนไลน์!

โครงสร้างrรายการของช่วงเวลา <= n; ถ้า n เป็นนายกแล้วก็nจะเป็นlen(r)'ที่สำคัญ ดังนั้น n จึงเป็นซูเปอร์ไพรม์ iff n ใน r และ len (r) ใน r



0

Julia 0.6, 61 bytes

ส่งคืน 1 ถ้า x เป็นค่ายิ่งใหญ่ 0 เป็นอย่างอื่น

โดยไม่ใช้ฟังก์ชั่น isprime

x->a=[0,1];for i=3:x push!(a,0i%(2:i-1))end;a[sum(a)]&a[x]
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.