Ein Emirp ist eine nicht-palindrome Primzahl, die umgekehrt auch eine Primzahl ist.
Die Liste der Basis-10-Emirps finden Sie auf OEIS . Die ersten sechs sind:
13, 17, 31, 37, 71, 73
Aufgrund der Umkehrregel unterscheiden sich die Emirps jedoch in jeder Basis. Zum Beispiel sind die ersten sechs binären Emirps:
Bin | 1011, 1101, 10111, 11101, 101001, 100101
Dec | (11 , 13 , 23 , 29 , 37 , 41 )
... und hexadezimal sind dies:
Hex | 17, 1F, 35, 3B, 3D, 53
Dec | (23, 31, 53, 59, 61, 83)
Fun Fact: Es gibt keine emirps in einstelligen als jede Zahl ein Palindrom ist.
Die Herausforderung
Ihre Aufgabe ist es, eine Funktion (oder ein vollständiges Programm) zu erstellen, die die beiden Parameter und und eine Liste der ersten Emirps in der Basis .
Regeln / Details:
- und sind beide positive ganze Zahlen größer als .
- Sie können annehmen , dh die Basis liegt zwischen binär und hexadezimal.
- Sie sollten in der Lage sein, für Werte von bis zu 100 zu berechnen .
- Die generierte Liste kann sich in der Basis oder in der Standard-Ganzzahlbasis Ihrer Sprache befinden, sofern Sie dies in Ihrer Antwort angeben.
- Eingebaute Emirp-Prüfungen sind nicht zulässig (eingebaute Primalitätstests sind in Ordnung).
- Sie können die Emirps nicht fest codieren oder aus externen Dateien lesen.
- Standardlücken sind wie immer verboten.
- Das ist Code-Golf , also gewinnt die kürzeste Antwort (in Bytes).
Testfälle
Für jeden Testfall habe ich die Liste in base b
und ihre 10-Äquivalente aufgenommen.
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]
Sie können Ihr Programm weiter mit meinem (ungolfed) Python-Beispiel auf repl.it testen
quelle
05AB1E , 17 Bytes
Verwendet die CP-1252- Codierung.
Die Eingabereihenfolge ist Die
n, b
Ausgabe erfolgt zur Basis 10.
Probieren Sie es online!
Erläuterung
quelle
Mathematica, 70 Bytes
Funktioniert für
0 <= n <= 100
und2 <= b <= 16
. Aus der ListePrime@Range@437
der ersten437
Primzahlen, finden die ,Cases
p
wo dieIntegerReverse
r
vonp
in der Basis#2
nicht gleichp
und ist auch prime, dann die ersten nehmen#
solchep
.Hier ist eine 95-Byte-Lösung, die für beliebige
n>=0
und funktioniertb>=2
:quelle
IntegerReverse
. Na sicher! Nett.Reap
ing in der Fußzeile ist erlaubt:For[i=j=0,j<#,If[(r=IntegerReverse[p=Prime@++i,#2])!=p&&PrimeQ@r,j++;Sow@p]]&
Perl, 262 Bytes
Lesbar:
c
wandelt eine gegebene Zahl in eine Basis um$b
undd
konvertiert eine gegebene Zahl von einer Basis$b
zurück in eine Dezimalzahl, indem die erste Zahl ermittelt wird, die die Basiszahl zurückgibt,$b
wenn sie an übergeben wirdc
. Die for-Schleife prüft dann, ob es sich um ein Palindrom handelt und ob beide Zahlen mit dem zusammengesetzten regulären Ausdruck Primzahlen sind.quelle
Mathematica 112 Bytes
Beispiel
Finde die ersten 10 Emips in hex; Gib sie dezimal zurück.
Ungolfed
quelle
Perl 6 , 91 Bytes
Gibt die Liste der Emirps in Basis 10 zurück.
quelle
Python 3 ,
232214191188 BytesProbieren Sie es online!
quelle
C
293286261 BytesVerbessert um @ceilingcat , 261 Bytes:
Probieren Sie es online!
(Diese Person verfolgt mich ständig durch PPCG und verbessert meine Inhalte in den Kommentaren. Sobald ich ihm danke, löscht er den Kommentar und verschwindet lol. Welp, nochmals danke!)
Verbessert von @movatica , 286 Bytes:
Probieren Sie es online!
Meine ursprüngliche Antwort, 293 Bytes:
Kompiliere mit
gcc emirp.c -o emirp -lm
und starte mit./emirp <b> <n>
. Gibt durch Leerzeichen getrennte Emirps in Basis 10 aus.quelle
JavaScript (ES6),
149148141140 ByteGibt eine durch Leerzeichen getrennte Liste von Emirps in der Basis b zurück. (Könnte 2 Bytes kürzer sein, wenn stattdessen eine Dezimalliste zurückgegeben wird.)
Testfälle
Code-Snippet anzeigen
quelle
Python 2 , 133 Bytes
Probieren Sie es online!
Gibt jede Zahl in einer neuen Zeile in Basis 10 aus
quelle
APL (NARS), 87 Zeichen, 174 Byte
Das Ergebnis wird in Base 10 angezeigt. Test und Ergebnisse:
{(⍺⍴⍨⌊1+⍺⍟⍵)⊤⍵}
würde die Umwandlung von⍵
in base⍺
, array integer result durchführen;0π⍵
würde true [1] zurückgeben, wenn⍵
prime else ist, würde 0 zurückgegeben.quelle