tło
Super-prime jest liczbą pierwszą, którego indeks w liście wszystkich liczb pierwszych jest liczbą pierwszą. Sekwencja wygląda następująco:
3, 5, 11, 17, 31, 41, 59, 67, 83, 109, 127, 157, 179, 191, ...
Jest to sekwencja A006450 w OEIS .
Wyzwanie
Biorąc pod uwagę dodatnią liczbę całkowitą, określ, czy jest to super-pierwsza
Przypadki testowe
2: fałsz 3: prawda 4: fałsz 5: prawda 7: fałsz 11: prawda 13: fałsz 17: prawda 709: prawda 851: fałsz 991: prawda
Punktacja
To jest golf golfowy , więc wygrywa najkrótsza odpowiedź w każdym języku.
code-golf
sequence
number-theory
decision-problem
primes
musicman523
źródło
źródło
Odpowiedzi:
Galaretka , 5 bajtów
Wypróbuj online!
Jak to działa
źródło
Mathematica,
2623 bajtówPodziękowania dla user202729 za zapisanie 3 bajtów.
Wykorzystuje to fakt, że Mathematica pozostawia większość bezsensownych wyrażeń nieocenionych (w tym przypadku logiczną
And
dwóch liczb) iMap
może być stosowana do dowolnego wyrażenia, nie tylko list. Tak więc obliczamyAnd
wejściowy i jego indeks główny, który po prostu taki jest, a następnie testujemyMap
pierwotność tego wyrażenia, które zamienia dwa operandy zAnd
logicznych w taki sposób, żeAnd
można je następnie ocenić.źródło
PrimeQ/@(#&&PrimePi@#)&
.Galaretka , 6 bajtów
Wypróbuj online!
Używa tej samej techniki, co moja odpowiedź Japt: Wygeneruj liczby pierwsze do n , uzyskaj indeks n na tej liście i sprawdź, czy jest on pierwotny. Jeśli samo n nie jest liczbą pierwszą, indeks wynosi 0 , co również nie jest liczbą pierwszą, więc i tak zwracane jest 0 .
źródło
Japt ,
1311 bajtówPrzetestuj online!
Wyjaśnienie
W rzeczywistości jest to bardzo proste, w przeciwieństwie do mojego pierwotnego wniosku:
źródło
Python 3 ,
1049793 bajtówZwraca
0
/1
, maksymalnie 4 bajty dłużej, jeśli musi to byćTrue
/False
.Wypróbuj online!
źródło
f
, możesz sformatować kod w ten sposób i wykluczyć go z liczby bajtów.Galaretka , 7 bajtów
Wypróbuj online!
ÆC
zlicza liczbę pierwszą mniejszą lub równą wejściu (więc jeśli wejście jest n- tą liczbą pierwszą, zwraca n ). NastępnieÆP
testuje ten wskaźnik pod kątem pierwszeństwa. Na konieca
wykonuje logiczne AND między tym wynikiem aÆP
(testem pierwotności) oryginalnego wejścia.źródło
Haskell , 62 bajty
Wypróbuj online! Zastosowanie:
f 991
plonyTrue
.źródło
05AB1E , 6 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Pyth , 12 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
Pyke, 8 bajtów
Wypróbuj tutaj!
źródło
Perl 6 , 46 bajtów
Wypróbuj online!
źródło
QBIC , 33 bajty
Wyjaśnienie
źródło
Mathematica,
3529 bajtów-6 bajtów od @MartinEnder
źródło
P@P@Range@#
powinien uratować sporo.Haskell, 121 bajtów
źródło
(\(_,x)->x)
jestsnd
,(\(x,_)->p x)
jest(p.fst)
. Zarównofst
isnd
są w Prelude, więc nie ma potrzeby importu.r x=elem x$take x s
. Jednak w tym przypadku można przejść pointfree (wprowadzenie odwrócone, pojedyncze apostrofy znowu) i pominąć nazwę funkcji:elem<*>(`take`s)
.Positron , 148 bajtów
Wypróbuj online!
źródło
Pari / GP , 31 bajtów
Wypróbuj online!
źródło
Matlab,
3634 bajtówZaoszczędź 2 bajty dzięki Tomowi Carpenterowi.
Bardzo naiwna implementacja wykorzystująca wbudowane funkcje:
źródło
(p=@isprime)(x)&p(nnz(primes(x)))
Python 2 , 89 bajtów
Wypróbuj online!
Konstruuje
r
, lista liczb pierwszych <= n; jeśli n jest liczbą pierwszą, ton
jestlen(r)
pierwszą liczbą pierwszą. Więc n jest superpierwszą liczbą iff nw r i len (r) wr.źródło
Python 2 , 79 bajtów
Wypróbuj online!
źródło
Julia 0.6, 61 bajtów
zwraca 1, jeśli x jest liczbą pierwszą, 0 w przeciwnym razie.
bez użycia funkcji rodzaju isprime.
źródło