O desafio é bastante simples:
- Tome um número inteiro positivo
n
como entrada. - Emita o
n
número primo de Fibonacci.
A entrada pode ser um parâmetro para uma função (e a saída será o valor de retorno) ou pode ser obtida na linha de comando (e emitida lá).
Nota: Não é permitido o uso de funções de verificação primária incorporadas ou geradores da série Fibonacci.
Boa sorte!
Respostas:
Ruby, 55
Chama a si próprio de forma recursiva, acompanhando os dois últimos números na sequência de Fibonacci em
a
eb
, e com quantos primos ele é visto até agoran
.n
é decrementado quando o menor fator maior que 1 deb
, dividido porb
e arredondado para o número inteiro mais próximo, é 1 em vez de 0, o que ocorre apenas para o primeb
. Quando é visto todos os primos que deve, ele imprimea
, que é o mais recenteb
testado para primalidade.fonte
C, 66
f(n,a,b){int i=2;while(a%i&&i++<a);return(n-=i==a)?f(n,b,a+b):a;}
fonte
a
eb
dentro de sua função.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 eb
= 2 funcionou para mim.g(n){f(n,1,2);}
?C,
85,81, 76estilo de código emprestado da verificação simplificada de número primo da @Gautam
função C independente (sem globais)
Teste:
fonte
Mathematica, 59 ou 63 bytes
Essas são funções sem nome que recebem
n
como entrada e retornam o Fibonacci prime correto. A versão mais curta usaDivisors
. Não tenho muita certeza se isso é permitido, mas a outra resposta do Mathematica ainda usaFactorInteger
.O segundo não usa nenhuma função relacionada à fatoração, mas conta o número de números inteiros menores do que os
n
que são produzidos0
em uma operação de módulo. Até mesmo esta versão supera todos os envios válidos, mas tenho certeza de que apenas publicar esta resposta fará com que algumas pessoas forneçam respostas competitivas no GolfScript, APL ou J.;)fonte
Mathematica
147 143141 caracteresf
é a definição recursiva do número de Fibonacci.q
detecta números primos.k
é um Fibonacci prime iffq@f@k
é True.Para
n
= 10, a saída é433494437
.fonte
Ruby,
94 6867Clojure, 112
Ungolfed:
Golfe:
(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))
fonte
Haskell 108
Para obter o
n
número, ligue para elefp !! n
.EDIT: Sic. Resposta errada, eu conserto.
fonte
Groovy: 105 (134 com espaços em branco)
b
é a função fibonacci.o fechamento dentro do if é a função de verificação primária. Atualização: uma pequena correção
r
é o número primo de fibonacci.Casos de teste:
Uma versão legível:
fonte
C, 105 (com espaços)
implementação de fibonacci usando programação dinâmica:
Código legível:
fonte
Pyth - 29 bytes
Faz um loop de Fibonacci até que o array tenha o comprimento n, mas apenas adiciona ao array se prime.
Meio lento, mas atingiu n = 10 em ~ 15 segundos. Provavelmente pode ser jogado mais.
Isenção de responsabilidade: Pyth é mais novo que esse desafio, não competindo.fonte
Javascript:
fonte