El desafío es bastante simple:
- Tome un número entero positivo
ncomo entrada. - Salida del
nnúmero primo de Fibonacci.
La entrada puede ser como un parámetro para una función (y la salida será el valor de retorno), o puede tomarse de la línea de comando (y enviarse allí).
Nota: No se permite el uso de funciones de verificación principales integradas o generadores de la serie Fibonacci.
¡Buena suerte!

Respuestas:
Rubí, 55
Se llama de forma recursiva, haciendo un seguimiento de los dos últimos números en la secuencia de Fibonacci en
ayb, y con cuántos primos se ha visto hasta ahoran.nse decrementa cuando el factor más pequeño mayor que 1 deb, dividido porby redondeado al entero más cercano, es 1 en lugar de 0, lo que ocurre solo para primob. Cuando ve todos los números primos que se supone que debe ver, imprimea, que es labprueba más reciente de primalidad.fuente
C, 66
f(n,a,b){int i=2;while(a%i&&i++<a);return(n-=i==a)?f(n,b,a+b):a;}fuente
aybdentro de su función.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 yb= 2 funcionó para mí.g(n){f(n,1,2);}?C,
85,81, 76estilo de código prestado de verificación simplificada de números primos de @Gautam
función C autónoma (sin globals)
Pruebas:
fuente
Mathematica, 59 o 63 bytes
Estas son funciones sin nombre que toman
ncomo entrada y devuelven el primo correcto de Fibonacci. La versión más corta usaDivisors. No estoy completamente seguro de si esto está permitido, pero la otra respuesta de Mathematica incluso lo usaFactorInteger.El segundo no utiliza ninguna función relacionada con la factorización, sino que cuenta el número de números enteros más pequeños que los
nque se producen0en una operación de módulo. Incluso esta versión supera todas las presentaciones válidas, pero estoy seguro de que solo publicar esta respuesta hará que algunas personas proporcionen respuestas competitivas en GolfScript, APL o J.;)fuente
Mathematica
147 143141 caracteresfes la definición recursiva del número de Fibonacci.qdetecta primos.kes un primo de Fibonacci siq@f@kes verdadero.Para
n= 10, la salida es433494437.fuente
Rubí,
94 6867Clojure, 112
Sin golf:
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))fuente
Haskell 108
Para obtener el
nnúmero llámalofp !! n.EDITAR: Sic. Respuesta incorrecta, lo arreglo.
fuente
Groovy: 105 (134 con espacios en blanco)
bEs la función de Fibonacci.el cierre dentro del if es la función de verificación principal. Actualización: una pequeña solución
res el primer número de fibonacci.Casos de prueba:
Una versión legible:
fuente
C, 105 (con espacios)
Implementación de Fibonacci mediante programación dinámica:
Código legible:
fuente
Pyth - 29 bytes
Recorre Fibonacci en bucle hasta que la matriz tenga una longitud n, pero solo se agrega a la matriz si es primo.
Algo lento, pero alcanzó n = 10 en ~ 15 segundos. Probablemente se pueda jugar más al golf.
Descargo de responsabilidad: Pyth es más nuevo que este desafío, por lo que no compite.fuente
Javascript:
fuente