Emirp jest non-palindromiczna prime, który po odwróceniu, jest również podstawowym.
Lista 10 podstawowych emirps znajduje się w OEIS . Pierwsze sześć to:
13, 17, 31, 37, 71, 73
Jednak ze względu na zasadę odwrócenia emirps są różne w każdej bazie. Na przykład pierwsze sześć binarnych emirps to:
Bin | 1011, 1101, 10111, 11101, 101001, 100101
Dec | (11 , 13 , 23 , 29 , 37 , 41 )
... a w systemie szesnastkowym są to:
Hex | 17, 1F, 35, 3B, 3D, 53
Dec | (23, 31, 53, 59, 61, 83)
Ciekawostka: nie ma emirps w jednoskładnikowa jak każda liczba jest palindrom.
Wyzwanie
Twoim zadaniem jest utworzenie funkcji (lub pełnego programu), która pobierze dwa parametry, i , i wygeneruje listę pierwszych emirps w bazie .
Zasady / szczegóły:
- i są dodatnimi liczbami całkowitymi większymi niż .
- Możesz założyć : to znaczy, że podstawa będzie między wartością binarną a szesnastkową.
- Powinieneś być w stanie obliczyć dla wartości od do 100 .
- Wygenerowana lista może znajdować się w bazie lub standardowej podstawie liczb całkowitych twojego języka, o ile podasz to w odpowiedzi.
- Wbudowane testy emirp są niedozwolone (wbudowane testy pierwotności są w porządku)
- Nie można na stałe zakodować emirps ani odczytać z plików zewnętrznych.
- Standardowe luki są jak zawsze zakazane.
- To jest golf golfowy , więc wygrywa najkrótsza odpowiedź (w bajtach).
Przypadki testowe
Dla każdego przypadku testowego zawarłem listę w bazie b
i jej 10 ekwiwalentów.
B = 2, N = 10
BIN: [1011, 1101, 10111, 11101, 100101, 101001, 101011, 101111, 110101, 111101]
DEC: [11, 13, 23, 29, 37, 41, 43, 47, 53, 61]
B = 3, N = 5
BASE3: [12, 21, 102, 201, 1011]
DEC: [5, 7, 11, 19, 31]
B = 12, N = 7
BASE12: [15, 51, 57, 5B, 75, B5, 107]
DEC: [17, 61, 67, 71, 89, 137, 151]
B = 16, N = 4
HEX: [17, 1F, 35, 3B]
DEC: [23, 31, 53, 59]
Możesz dalej testować swój program na moim (nie golfowym) przykładzie Pythona na repl.it
źródło
05AB1E , 17 bajtów
Wykorzystuje kodowanie CP-1252 .
Kolejność wprowadzania to
n, b
Wyjście jest w bazie-10.
Wypróbuj online!
Wyjaśnienie
źródło
Mathematica, 70 bajtów
Działa dla
0 <= n <= 100
i2 <= b <= 16
. Z listyPrime@Range@437
pierwszych437
liczb pierwszych, znaleźćCases
p
gdzieIntegerReverse
r
odp
w bazie#2
nie jest równap
, a także jest pierwsza, a następnie podjąć pierwszą#
takiep
.Oto 95-bajtowe rozwiązanie, które działa dla dowolnego
n>=0
ib>=2
:źródło
IntegerReverse
. Oczywiście! Ładny.Reap
ing jest dozwolone w stopce:For[i=j=0,j<#,If[(r=IntegerReverse[p=Prime@++i,#2])!=p&&PrimeQ@r,j++;Sow@p]]&
Perl, 262 bajtów
Czytelny:
c
konwertuje daną liczbę na bazę$b
id
konwertuje daną liczbę z bazy z$b
powrotem na dziesiętną, znajdując pierwszą liczbę, która zwraca wspomnianą$b
liczbę bazową po przekazaniu doc
. Pętla for sprawdza następnie, czy jest to palindrom i czy obie liczby są pierwsze, używając wyrażenia regularnego złożonego.źródło
Matematyka 112 bajtów
Przykład
Znajdź pierwsze 10 Emipsów w heksie; zwróć je w postaci dziesiętnej.
Nie golfił
źródło
Perl 6 , 91 bajtów
Zwraca listę emirps w bazie 10.
źródło
Python 3 ,
232214191188 bajtówWypróbuj online!
źródło
C
293286261 bajtówPoprawiony przez @ceilingcat , 261 bajtów:
Wypróbuj online!
(Ta osoba jest jak ciągłe śledzenie mnie wokół PPCG i poprawianie moich rzeczy w komentarzach, a jak tylko odpowiem, aby mu podziękować, po prostu usuwa komentarz i znika lol. Welp, jeszcze raz dziękuję!)
Poprawiony przez @movatica , 286 bajtów:
Wypróbuj online!
Moja oryginalna odpowiedź, 293 bajty:
Kompiluj
gcc emirp.c -o emirp -lm
i uruchamiaj z./emirp <b> <n>
. Wyświetla emirps rozdzielone spacjami w bazie-10.źródło
JavaScript (ES6),
149148141140 bajtówZwraca rozdzieloną spacjami listę emirps w bazie b. (Może być o 2 bajty krótszy, zwracając listę dziesiętną.)
Przypadki testowe
Pokaż fragment kodu
źródło
Python 2 , 133 bajty
Wypróbuj online!
Wyświetla każdą liczbę w nowej linii, w bazie 10
źródło
APL (NARS), 87 znaków, 174 bajty
Wynik będzie w bazie 10. Test i wyniki:
{(⍺⍴⍨⌊1+⍺⍟⍵)⊤⍵}
zrobi konwersja⍵
w bazie⍺
, tablicy całkowitej wyniku;0π⍵
zwróci true [1], jeśli⍵
jest liczbą pierwszą, zwróci 0.źródło