Wenn eine Zahl n gegeben ist, drucken Sie die n-te Primzahl Fermat, wobei die Fermat-Zahlen die Form 2 2 k + 1 haben. Dieser Code sollte theoretisch Arbeit für jeden n (dh sie codieren es nicht), obwohl es nicht für n beenden , wird erwartet , dass> 4. (Es sollte nicht 4294967297 Rück für n = 5, als 4294967297 keine Primzahl ist.)
Beachten Sie, dass zwar alle Fermat-Primzahlen die Form 2 2 n + 1 haben, jedoch nicht alle Zahlen der Form 2 2 n + 1 Primzahlen sind. Das Ziel dieser Herausforderung ist es, die n-te Primzahl zurückzugeben.
Testfälle
0 -> 3
1 -> 5
2 -> 17
3 -> 257
4 -> 65537
Regeln
- Standardlücken sind nicht zulässig.
- 0-Indizierung und 1-Indizierung sind beide akzeptabel.
- Dies ist Code-Golf , niedrigste Byte-Anzahl gewinnt.
Verwandte: Konstruierbare n-Gons
2^(2^n) + 1
, won
ist die Eingabe? Dies stimmt mit Ihren Testfällen überein (von denen wir wissen, dass sie bereits erstklassig sind, sodass keine Überprüfung erforderlich ist). Und Sie erwarten nicht, dass das Programm funktioniert, wenn n> 4 ist (und n = 5 die erste Nicht-Primzahl ist).n=1:4
. Alle Fermat-Primzahlen haben die Form2^2^n+1
, aber das bedeutet nicht, dass alle Zahlen der Form2^2^n+1
tatsächlich Primzahlen sind. Dies ist zum Beispiel der Falln=1:4
, aber nichtn=5
zum Beispiel.n
und die Ausgabe von der Form sein muss2^(2^n)+1
. Wenn Sie unterschiedliche Variablen für die Eingabe und den Exponenten verwenden, kann dies zu Verwirrung führen. Es kann auch hilfreich sein, wenn Sie ausdrücklich angeben, dass "n = 5 nicht in angemessener Zeit ausgegeben werden muss, aber nicht 4294967297"Antworten:
Python 2 , 53 Bytes
Probieren Sie es online aus!
Verwendet Pépins Test .
Python 2 , 54 Bytes
Probieren Sie es online aus!
quelle
Gelee ,
1311 BytesVerwendet 1-basierte Indizierung.
Probieren Sie es online aus!
Wie es funktioniert
quelle
ṛ
, um das Ergebnis zu löschen ... TILÆẸ
statt2*
für eine einzelne ganze Zahl ... BISPerl 6 ,
4542 BytesVersuch es
Versuch es
Erweitert:
quelle
Mathematica, 56 Bytes
Probieren Sie es online aus!
quelle
Pyth , 14 Bytes
Probieren Sie es online aus!
Verwendet 1-Indizierung.
quelle
Pyth , 14 Bytes
Versuchen Sie es online.
Hauptidee "entlehnt" von xnors Antwort in einer anderen Frage
quelle
05AB1E , 8 Bytes
Code:
Die Ergebnisse sind 1-indiziert.
Verwendet die 05AB1E- Codierung. Probieren Sie es online aus!
Erläuterung:
quelle
Javascript,
1246 BytesDer größte Teil des Codes wird von der Hauptprüfung übernommen, die von hier stammt .
quelle
Dyalog APL (29 Zeichen)
Ich bin mir fast sicher, dass dies verbessert werden kann.
Dies ist eine rekursive Funktion, die die Anzahl der Teiler von 1 + 2 ^ 2 ^ ⍵ überprüft, wobei ⍵ das richtige Argument der Funktion ist. Wenn die Anzahl der Teiler 2 ist, ist die Zahl eine Primzahl und gibt sie zurück. Andernfalls ruft sie die Funktion erneut mit ⍵ + 1 als rechtem Argument auf.
Beispiel
Hier rufe ich die Funktion auf jedem von ⍳4 (die Zahlen 1-4) auf. Es wendet es der Reihe nach auf jede Zahl an.
quelle
Haskell , 61 Bytes
Probieren Sie es online aus!
0-basierter Index
Erläuterung
quelle