Seit Euklid wissen wir, dass es unendlich viele Primzahlen gibt. Das Argument ist widersprüchlich: Wenn es nur endlich viele gibt, sagen wir , dann ist durch keines von teilbar Diese Primzahlen, also muss ihre Primfaktorisierung eine neue Primzahl ergeben, die nicht in der Liste enthalten war. Die Annahme, dass nur endlich Primzahlen existieren, ist also falsch.
Nehmen wir nun an, dass die einzige Primzahl ist. Die obige Methode ergibt als neue (mögliche) Primzahl. Die erneute Anwendung der Methode ergibt und dann , dann , also beide und sind neue Primzahlen usw. Wenn wir eine zusammengesetzte Zahl erhalten, nehmen wir nur die am wenigsten neue Primzahl. Dies führt zu A000945 .
Herausforderung
Berechnen Sie bei gegebener Primzahl und einer ganzen Zahl den ten Term der Sequenz, die wie folgt definiert ist:
Diese Sequenzen sind als Euklid-Mullin- Sequenzen bekannt.
Beispiele
Für :
1 2
2 3
3 7
4 43
5 13
6 53
7 5
8 6221671
9 38709183810571
Für ( A051308 ):
1 5
2 2
3 11
4 3
5 331
6 19
7 199
8 53
9 21888927391
Für ( A051330 )
1 97
2 2
3 3
4 11
5 19
6 7
7 461
8 719
9 5
(,0({q:)1+*/)^:
Für 15 Byte wird die Sequenz zurückgegeben bisn
(null-indiziert)verb conj
produziert ein Adverb .^:
, und das wird dann zu einem Verb, das für das rechte Argument gilt. Ich denke, das passiert grammatikalisch.Python 2 , 56 Bytes
Probieren Sie es online!
Kommentiert
Probieren Sie es online!
quelle
int(input())
sonsti
noch einestr
?input()
immer Zeichenfolgen zurückgegeben werden. In Python 2 wirdinput()
versucht, die Eingabe auszuwerten. In diesem Fall verwende ich Python 2, da der resultierende Code etwas kürzer ist. Für echten Code sollten Sie versuchen, Python 3 zu verwenden, da es die neuere und unterstütztere Version von Python ist.Gelee , 8 Bytes
n=0
Probieren Sie es online!
Wie?
quelle
05AB1E , 8 Bytes
f
Erläuterung:
quelle
λλP>fW
λ£λP>fW
£
£
aber für das letzte Element! ", Wie.£
? ;) BEARBEITEN: Eigentlich funktioniert es nicht genau wie£
bei Listen. Verwenden einer Liste[1,2]
mit.£
Ergebnissen in zwei losen Elementen mit den letzten 1 und 2 Elementen (dh12345
wird[5,45]
anstelle von[45,3]
oder[3,45]
mit12S.£
).λ.£
das funktionieren soll. Ich habe flag als zusätzliche Funktion verwendetλ
(siehe dieses Gespräch mit Adnan ). Grundsätzlich möchte ich ein Flagè
, das beim Ausführenλè...}
das n-te Element und nicht den unendlichen Stream generiert (genau wieλ£
beim Generieren der ersten n Elemente).£
für die rekursive Umgebung benutzt. Ja, dannλ.£
wird es ja nicht klappen, mein Schlimmes. Trotzdem netter 6-Byter. Jetzt musst du nur noch auf die Antwort von @flawr warten , ob es erlaubt ist oder nicht (es ist wahrscheinlich).Japt ,
1211 BytesMühte sich ab, dies zu korrigieren, so dass möglicherweise etwas verpasst wurde, das golfen werden kann.
Nimmt
n
als erste Eingabe undp1
als Singleton-Array als zweite. Gibt die erstenn
Terme zurück. Wechseln Sieh
zug
, umn
stattdessen den th 0-indizierten Begriff zurückzugeben.Versuch es
quelle
Netzhaut , 56 Bytes
Probieren Sie es online! Nimmt die Eingabe als die Anzahl der neuen Terme, die in der ersten Zeile hinzugefügt werden sollen, und die Startterme in der zweiten Zeile. Hinweis: Wird sehr langsam, da die unäre Faktorisierung verwendet wird und daher eine Zeichenfolge mit der entsprechenden Länge erstellt werden muss. Erläuterung:
Ersetzen Sie die Kommas in den Startwerten durch
*
s und fügen Sie a hinzu*
. Dadurch wird ein Retina-Ausdruck für eine Zeichenfolge der Länge des Produkts der Werte erstellt.Wiederholen Sie die Schleife so oft, wie sie von der ersten Eingabe angegeben wurde.
Ersetzen Sie die Zahl in der ersten Zeile vorübergehend durch a
$
und stellen Sie a_
vor die zweite Zeile, und werten Sie das Ergebnis als Retina-Programm aus. Fügen Sie dabei eine Zeichenfolge_
der Länge 1 hinzu, die größer ist als das Produkt der Werte.Finden Sie den kleinsten nichttrivialen Faktor der Zahl in Dezimalzahl und hängen Sie ein
*
Ready für die nächste Schleife an.Löschen Sie die Iterationseingabe.
Löschen Sie den letzten
*
.Ersetzen Sie das verbleibende
*
s durch,
s.quelle
JavaScript (Node.js) , 54 Byte
Probieren Sie es online!
Ungolfed
quelle
Bash + GNU Coreutils, 89 Bytes
TIO
quelle
Ruby 2.6, 51 Bytes
(2..)
, der unendliche Bereich ab 2, wird von TIO noch nicht unterstützt.Dies ist eine rekursive Funktion, die einen Startwert annimmt
s
(kann eine Primzahl oder eine Zusammensetzung sein), ihn zurückgibt, wenn n = 0 ist (Bearbeiten: Beachten Sie, dass dies bedeutet, dass er mit Null indexiert ist), die kleinste Zahl zurückgibtl
, die größer als 1 ist, und-(s+1)
wenn n dividiert = 1 und ansonsten rekursiv mits=l*s
undn=n-1
.quelle
(2..)
mit2.step
(nur 1 Byte länger), um die Arbeit an TIO zu ermöglichen und alles war weg nach der anderen. Probieren Sie es online!APL (Dyalog Extended) , 15 Byte
Dies ist eine ziemlich einfache Implementierung des Algorithmus, der die sehr hilfreichen Primfaktoren von Extended verwendet
⍭
. Probieren Sie es online!Erläuterung
quelle
Pari / GP , 47 Bytes
Probieren Sie es online!
quelle
Stax , 9 Bytes
Führen Sie es aus und debuggen Sie es
Nimmt und (null-indiziert) für die Eingabe. Produziert .
p0
n
pn
quelle
C (GCC) ,
5453 BytesProbieren Sie es online!
-1 byte dank ceilingcat
quelle
Perl 6 ,
3332 Bytes-1 byte dank nwellnhof
Probieren Sie es online!
Anonymer Codeblock, der eine Nummer entgegennimmt und eine Lazy List zurückgibt.
Erläuterung:
quelle
-+^[*](@_)
Speichert ein Byte.Haskell , 49 Bytes
Probieren Sie es online!
Gibt die unendliche Folge als Lazy List zurück.
Erläuterung:
quelle