Dies ist die Sequenz A054261 .
Die te Primzahl ist die niedrigste Zahl, die die ersten Primzahlen als Teilzeichenfolgen enthält. Zum Beispiel ist die Zahl die niedrigste Zahl, die die ersten 3 Primzahlen als Teilzeichenfolgen enthält, was sie zur dritten Primzahl macht.
Es ist trivial herauszufinden, dass die ersten vier Primzahlen , , und , aber dann wird es interessanter. Da die nächste Primzahl 11 ist, ist die nächste Primzahl nicht , sondern da sie als die kleinste Zahl mit der Eigenschaft definiert ist.
Die eigentliche Herausforderung ergibt sich jedoch, wenn Sie über 11 hinausgehen. Die nächste Primzahl lautet . Beachten Sie, dass sich in dieser Nummer die Teilzeichenfolgen und überlappen. Die Nummer überschneidet sich auch mit der Nummer .11
13
3
13
Es ist leicht zu beweisen, dass diese Folge zunimmt, da die nächste Zahl alle Kriterien der Zahl davor erfüllen und eine weitere Teilzeichenfolge haben muss. Die Sequenz nimmt jedoch nicht unbedingt zu, wie die Ergebnisse für n=10
und zeigen n=11
.
Eingang
Eine einzelne Ganzzahl n>0
(ich nehme an, Sie könnten sie auch 0-indizieren lassen und dann machen n>=0
)
Ausgabe
Entweder die n
th Prim Containment-Nummer oder eine Liste mit den ersten n
Prim Containment-Nummern.
Die Zahlen, die ich bisher gefunden habe, sind:
1 => 2
2 => 23
3 => 235
4 => 2357
5 => 112357
6 => 113257
7 => 1131725
8 => 113171925
9 => 1131719235
10 => 113171923295
11 => 113171923295
12 => 1131719237295
Beachten Sie, dass n = 10
und n = 11
dieselbe Nummer sind, da die niedrigste Nummer ist, die alle Nummern , aber auch .
Da dies Code Golf markiert ist, erhalten Sie Golf! Brute-Force-Lösungen sind zulässig, aber Ihr Code muss theoretisch für jede Eingabe geeignet sein (dh, Sie können nicht nur die ersten n Primzahlen verketten). Viel Spaß beim Golfen!
P
Operator eine explizite Zuordnung, um nach Primzahlen in der Zahl zu suchen (anstatt zu prüfen, ob die Zahl im Array von Primzahlen enthalten ist)? Dies ist eine schöne Lösung, ich bezweifle, dass Sie eine Lösung mit weniger Befehlen erreichen können.P
ist Produkt. Grundsätzlich werden alle Werte in einer Liste multipliziert. DerÅp
erstellt eine Liste mit der erstenn
Primzahl, wobei in diesem Falln
die Eingabe erfolgtI
. Daså
wird für jede Zahl in dieser Liste von Primzahlen prüfen, ob sie in der aktuellen Nummer der unendlichen Liste sind, wo es1
für Wahrheit und0
für Falschheit geben wird. Das Produkt prüft also grundsätzlich, ob alle wahr sind. wenn alle Primzahlen innerhalb der aktuellen Zahl liegen. Wenn welche 0 sind,P
ergibt sich auch eine Falschmeldung. Aber wenn alles so ist1
, ist dasP
Ergebnis wahr und die.Δ
Schleife stoppt.1µNIÅpåP
. Für diejenigen, die 05AB1E nicht kennen, auch eine Erklärung für meins:1µ
- Bis die Zählervariable 1 erreicht (sie beginnt bei 0, erhöht sichN
schrittweise um 1 und führt Folgendes aus:NIÅpåP
- Überprüfen Sie, ob alle ersten <Eingabe> - Primzahlen inN
und erscheinen In diesemX
statt aus1
Gründen), aber ich habe auf diese umgestellt, da ich vorher noch nie die Möglichkeit hatte, sie zu verwenden∞
:)Jelly , 11 Bytes
Probieren Sie es online!
Einfache rohe Gewalt. Ich bin mir nicht ganz sicher, wie
#
die Arität funktioniert, daher gibt es möglicherweise Raum für Verbesserungen.Wie es funktioniert
quelle
wⱮẠ¥1#ÆN€
spart zwei Bytes.Java 8, 143 Bytes
Probieren Sie es online aus.
ANMERKUNGEN:
n=7
.n=9
aufgrund der Größenbeschränkung vonint
(maximal2,147,483,647
) nur bis zu maximal .int
in a ändernlong
, wird das Maximum auf eine Ausgabe darunter erhöht9,223,372,036,854,775,807
(ungefährn=20
denke ich?)java.math.BigInteger
des Maximums kann es (theoretisch) auf jede beliebige Größe erhöht werden, aber es wird etwa +200 Bytes betragen, zumindest aufgrund der Ausführlichkeit derjava.math.BigInteger
Methoden.Erläuterung:
quelle
JavaScript (ES6),
105 ... 9291 BytesProbieren Sie es online!
Wie?
Kommentiert
quelle
Ruby , 58 Bytes
Probieren Sie es online!
Brute-Force, arbeitet bis zu 7 auf TIO.
quelle
Pyth , 14 Bytes
Probieren Sie es online!
Pyth , 15 Bytes
Etwas schneller, aber 1 Byte länger.
Probieren Sie es online!
quelle
Jelly , 14 Bytes
Probieren Sie es online!
quelle
Holzkohle , 42 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Bauen Sie die ersten
n
Primzahlen durch Versuchsteilung aller ganzen Zahlen durch alle zuvor gefundenen Primzahlen auf.Durchlaufen Sie alle Ganzzahlen, bis Sie eine finden, die alle Primzahlen als Teilzeichenfolgen enthält.
Wandle das Ergebnis in einen String um und drucke implizit.
Die Geschwindigkeit des Programms kann durch Ersetzen des letzten zu einem Preis von einem Byte verdoppelt werden
≦⊕η
mit ,≦⁺²η
aber es ist immer noch zu langsam zu berechnenn>6
.quelle
Perl 6 ,
6359 Bytes-4 bytes dank nwellnhof
Probieren Sie es online!
Eine Brute-Force-Lösung, die bei TIO eine Zeitüberschreitung für Zahlen über 5 aufweist, aber ich bin mir ziemlich sicher, dass sie richtig funktioniert. Findet die erste positive Zahl, die die ersten
n
Primzahlen enthält . Hier ist eine Lösung , für die es keine Zeitüberschreitung gibtn=6
.Erläuterung:
quelle
Python 2 , 131 Bytes
Probieren Sie es online!
f
ist die Funktion.quelle
Python 2 , 91 Bytes
Probieren Sie es online!
quelle
SAS, 149 Bytes
Die Eingabe erfolgt wie folgt
cards;
:Gibt einen Datensatz
p
mit dem Ergebnisv
mit einer Ausgabezeile für jeden Eingabewert aus. Sollte technisch für alle gegebenen Testfälle funktionieren (die maximale Ganzzahl mit voller Genauigkeit in SAS ist 9.007.199.254.740.992), aber ich habe aufgegeben, nachdem ich es 5 Minuten lang über n = 8 nachdenken ließ.Erläuterung:
quelle
Haskell , 102 Bytes
Probieren Sie es online!
Erklärung / Ungolfed
Da wir bereits
Data.List
importiert haben , können wir es genauso gut verwenden: Anstelle des guten alten könnentake n[p|p<-[2..],all((>0).mod p)[2..p-1]]
wir auch eine andere Methode verwenden, um alle Primzahlen zu generieren, die wir benötigen. Wir erzeugen nämlich eine ausreichende Menge an Verbundwerkstoffen und verwenden diese zusammen mit(\\)
:n*n
quelle
Japt,
20 bis18 BytesWeit entfernt von meiner besten Arbeit, war ich einfach froh, dass es nach dem Tag, den ich hatte, funktioniert. Ich bin mir sicher, dass ich es später im Säufer abklopfen werde!
Probieren Sie es aus - es dauert 13 Sekunden, bis eine Eingabe von ausgeführt wird
7
, und danach wird ein Wackeleffekt ausgelöst (die aktualisierte Version ist5
für mich ein Würfelspiel , aber das könnte nur mein Telefon sein).quelle
F.h()
alleine durchgeführt und es scheint kaputt zu sein; Die ETH muss etwas geändert haben.