Це супер-прем'єр?


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 ?
Денніс

1
@Денніс послідовність є 1-індексованою; індекс 2 дорівнює 1.
musicman523

2
Спочатку подумав, прочитавши, що таке супер-прем'єр: як би ти назвав супер-супер-праймес? Або супер ^ 3-праймес? Що більше, кількість атомів у Всесвіті чи 11-й супер ^ 11-простий? Ви, шановний користувач Інтернету, ви крадете ще кілька годин мого першочергового часу!
J_F_B_M

@J_F_B_M Зробіть виклик на основі цього! : D
musicman523

1
@J_F_B_M 11 - супер-прем'єр, індекс якого у списку супер-прем'єр також супер-прем'єр (3), тому 11-й супер-прем'єр - це супер-супер-прем'єр
Скідсдев

Відповіді:


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.


3
Він завжди робить ...
Грифон - Поновіть Моніку

@ETHproductions Ну, рішення досить очевидно ... тут просто ніндзя.
Ерік Аутгольфер

14

Математика, 26 23 байти

Завдяки user202729 за збереження 3 байтів.

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

Це використовує той факт, що Mathematica залишає більшість безглуздих виразів неоціненими (в даному випадку логічними Andдвома числами) і Mapможе застосовуватися до будь-якого виразу, а не лише до списків. Таким чином, ми обчислюємо Andвхідний та його простий індекс, який просто залишається таким, і тоді ми Mapперевіряємо первинність над цим виразом, який перетворює два операнди Andбулевих, таким чином, щоб Andпотім можна було оцінити.


1
23 байт: PrimeQ/@(#&&PrimePi@#)&.
користувач202729

@ user202729 Приємно, дякую. :)
Мартін Ендер

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 байти довше, якщо це має бути True/ False.

Спробуйте в Інтернеті!


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інше є в Прелюдії, тому немає потреби в імпорті.
Лайконі

Не використовуйте лапки занадто часто : r x=elem x$take x s. Однак, в цьому випадку ви можете піти pointfree (знову вводячи лапки) і опустити ім'я функції: elem<*>(`take`s).
німі



1

Матлаб, 36 34 байт

Збережено 2 байти завдяки Тому Карпентеру.

Дуже наївна реалізація за допомогою вбудованих функцій:

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

1
Тільки для Octave ви можете також зберегти подальший байт з(p=@isprime)(x)&p(nnz(primes(x)))
Том Карпентер

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

Джулія 0,6, 61 байт

повернути 1, якщо х - супер-просте, 0 в іншому випадку.

без використання функції isprime.

x->a=[0,1];for i=3:x push!(a,0i%(2:i-1))end;a[sum(a)]&a[x]
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.