Die Herausforderung ist ziemlich einfach:
- Nehmen Sie eine positive ganze Zahl
n
als Eingabe. - Geben Sie die
n
th Fibonacci-Primzahl aus.
Die Eingabe kann als Parameter für eine Funktion erfolgen (und die Ausgabe ist der Rückgabewert) oder über die Befehlszeile erfolgen (und dort ausgegeben werden).
Hinweis: Die Verwendung integrierter Hauptprüffunktionen oder Generatoren der Fibonacci-Serie ist nicht zulässig.
Viel Glück!
Antworten:
Ruby, 55
Ruft sich rekursiv auf und verfolgt die letzten beiden Zahlen in der Fibonacci-Sequenz in
a
undb
und wie viele Primzahlen es bisher gesehen hatn
.n
wird dekrementiert, wenn der kleinste Faktor größer als 1 vonb
, geteilt durchb
und abgerundet auf die nächste ganze Zahl, 1 statt 0 ist, was nur für Primzahlen geschiehtb
. Wenn alle Primzahlen angezeigt werden, die es soll, wird gedruckta
, was die zuletztb
auf Primalität getestete ist.quelle
C, 66
f(n,a,b){int i=2;while(a%i&&i++<a);return(n-=i==a)?f(n,b,a+b):a;}
quelle
a
undb
innerhalb Ihrer Funktion definieren.f(n,a,b){int i=2;while(a%i&&i++<a);return(n-=i==a)?f(n,b,a+b):a;}
- @ArtemIce:a
= 1 undb
= 2 haben bei mir funktioniert.g(n){f(n,1,2);}
?C
85,81, 76Ausgeliehener Codestil der vereinfachten Primzahlprüfung von @Gautam
in sich geschlossene C-Funktion (keine Globalen)
Testen:
quelle
Mathematica, 59 oder 63 Bytes
Dies sind unbenannte Funktionen, die
n
als Eingabe die korrekte Fibonacci-Primzahl zurückgeben. Die kürzere Version verwendetDivisors
. Ich bin mir nicht ganz sicher, ob dies erlaubt ist, aber die andere Mathematica-Antwort verwendet sie sogarFactorInteger
.Die zweite verwendet überhaupt keine faktorisierungsbezogenen Funktionen, sondern zählt stattdessen die Anzahl der Ganzzahlen, die kleiner sind als
n
die, die0
in einer Modulo-Operation erzeugt werden. Sogar diese Version übertrifft alle gültigen Einsendungen, aber ich bin sicher, dass nur das Posten dieser Antwort einige Leute dazu veranlasst, wettbewerbsfähige Antworten in GolfScript, APL oder J zu liefern.)quelle
Mathematica
147 143141 Zeichenf
ist die rekursive Definition der Fibonacci-Zahl.q
erkennt Primzahlen.k
ist eine Fibonacci-Primzahl, wennq@f@k
wahr ist.Für
n
= 10 ist die Ausgabe433494437
.quelle
Ruby,
94 6867Clojure, 112
Ungolfed:
Golf:
(defn q[n](nth(filter(fn[x](every? #(>(rem x %)0)(range 2 x)))((fn z[a b](lazy-seq(cons a(z b(+ a b)))))2 3))n))
quelle
Haskell 108
Um die
n
Nummer zu bekommen, rufen Sie sie anfp !! n
.EDIT: Sic. Falsche Antwort, ich behebe es.
quelle
Groovy: 105 (134 mit Leerzeichen)
b
ist die Fibonacci-Funktion.Der Verschluss im if ist die Hauptprüffunktion. Update: eine kleine Korrektur
r
ist die primäre Fibonacci-Zahl.Testfälle:
Eine lesbare Version:
quelle
C, 105 (mit Leerzeichen)
Fibonacci-Implementierung mit dynamischer Programmierung:
Lesbarer Code:
quelle
Pyth - 29 Bytes
Schleift Fibonacci, bis das Array die Länge n hat, fügt es jedoch nur dann zum Array hinzu, wenn es prim ist.
Etwas langsam, erreichte aber in ~ 15 Sekunden n = 10. Kann wahrscheinlich mehr Golf gespielt werden.
Haftungsausschluss: Pyth ist neuer als diese Herausforderung, also nicht im Wettbewerb.quelle
Javascript:
quelle