Jump to content
Sign in to follow this  
Socket

Números de Fibonacci

Recommended Posts

Socket    0
Socket

Sequencias de Fibonacci

 

Fibonacci:

 

 

  • A sequencia de Fibonacci é uma sequencia em que o próximo número é a soma dos dois últimos.
  • Esta sequência foi descrita primeiramente por Leonardo de Pisa, também conhecido como Fibonacci (Dc. 1200), para descrever o crescimento de uma população de coelhos.
  • Na prática começa por 0 e 1.

 

Sequencia: 1,1,2,3,5,8,13,21,34,55,89...

 

function fibonacci(n)
   return function()
       t = (t or 1)+1
       last, atual = last or 1, atual or 0
       lastn, atualn = last, atual
       last, atual = atual, atualn + lastn
       if t <= n+1 then
           return t-1, lastn+atualn
       end
   end
end

for i,v in fibonacci(100) do
   print(i,v)
end

 

Tribonacci:

 

 

  • A sequencia denominada Tribonacci é uma sequencia em que o próximo número é igual a soma dos três anteriores.

 

Sequencia: 1,1,2,4,7,13,24,44,81...

 

function tribonacci(n)
   return function()
       t = (t or 1)+1
       n1,n2,n3 = n1 or 1, n2 or 0, n3 or 0
       n1n,n2n,n3n = n1, n2, n3
       n1,n2,n3 = n2n, n3n, n1n+n2n+n3n
       if t <= n+1 then
           return t-1, n1n+n2n+n3n
       end
   end
end

for i, v in tribonacci(100) do
   print(i,v)
end

 

Tetranacci:

 

 

  • A sequencia de Tetranacci é uma sequencia em que o próximo número é igual a soma dos 4 números anteriores.

 

Sequencia: 1,1,2,4,8,15,29,56,108,208

 

function tetranacci(n)
   return function()
       t = (t or 1)+1
       n1,n2,n3,n4 = n1 or 1, n2 or 0, n3 or 0, n4 or 0
       n1n,n2n,n3n,n4n = n1, n2, n3, n4
       n1,n2,n3,n4 = n2n, n3n, n4n, n1n+n2n+n3n+n4n
       if t <= n+1 then
           return t-1, n1n+n2n+n3n+n4n
       end
   end
end

for i, v in tetranacci(100) do
   print(i,v)
end

 

Repfigits:

 

 

  • Um repfigit ou número de Keith é um número inteiro, superior a 9, tal que os seus dígitos, ao começar uma sequência de Fibonacci, alcançam posteriormente o referido número. Um exemplo é 47, porque a sequência de Fibonacci que começa com 4 e 7 (4, 7, 11, 18, 29, 47) alcança o 47. Outro exemplo é 197: 1+9+7= 17, 9+7+17= 33, 7+17+33= 57, 17+33+57= 107, 33+57+107= 197.

 

  • Alguns Números de Keith conhecidos: 14, 19, 28, 47, 61, 75, 197, 742, 1104, 1537, 2208, 2580, 3684, 4788, 7385, 7647, 7909, 31331, 34285…

[spoiler=Deprecated.]

function fibonacci(n,last,atual)
   return function()
       t = (t or 1)+1
       last, atual = last or 1, atual or 0
       lastn, atualn = last, atual
       last, atual = atual, atualn + lastn
       if t <= n+1 then
           return t-1, lastn+atualn
       end
   end
end

function tribonacci(n,n1,n2,n3)
   return function()
       t = (t or 1)+1
       n1,n2,n3 = n1 or 1, n2 or 0, n3 or 0
       n1n,n2n,n3n = n1, n2, n3
       n1,n2,n3 = n2n, n3n, n1n+n2n+n3n
       if t <= n+1 then
           return t-1, n1n+n2n+n3n
       end
   end
end

function tetranacci(n,n1,n2,n3,n4)
   return function()
       t = (t or 1)+1
       n1,n2,n3,n4 = n1 or 1, n2 or 0, n3 or 0, n4 or 0
       n1n,n2n,n3n,n4n = n1, n2, n3, n4
       n1,n2,n3,n4 = n2n, n3n, n4n, n1n+n2n+n3n+n4n
       if t <= n+1 then
           return t-1, n1n+n2n+n3n+n4n
       end
   end
end

function repfigit(n,n1,n2,n3,n4)
   if n1 and n2 and n3 and n4 then return tetranacci(n,n1,n2,n3,n4) end
   if n1 and n2 and n3 then return tribonacci(n,n1,n2,n3) end
   if n1 and n2 then return fibonacci(n,n1,n2) end
   return nil
end

for i,v in repfigit(10,6,1) do
   print(i,v)
end

Só funcionava quando o número de Keith era de no máximo 4 algarismos.

Extremamente grande.

 

 

function addTableC(t, n)
y = 0
   for i = #t-(n-1), #t do
       y = y + t[i]
   end
   return y
end

function getArg(t)
narg = {}
   for i, v in ipairs(t) do
       table.insert(narg,v)
   end
   return narg
end

function returnInTable(t,n)
tn = {}
   for i = 1, n do
       table.insert(tn,t[i])
   end
   return tn
end

function repfigit(na,...)
   return function()
       t = (t or 1)+1
       n = n or getArg(arg)
       if t <= na+1 then
           u = returnInTable(n, #n-1)
           table.insert(n,addTableC(n,#arg))
           return t-1, addTableC(u,#arg-(#arg-1))
       end
   end
end

for i,v in repfigit(100,3,1,3,3,1) do
   print(i,v)
end

 

Repare que no "15º print" retorna 31331.

Edited by Mickfern

Share this post


Link to post
Share on other sites
pejuge2    1
pejuge2

Muito interessante socketoso hehehe.

 

Já fiz muita função matemática, é divertido hehehehe.

 

Gosto muito de trabalhar com matrizes, é incrível como a base de tudo são matrizes de cordenadas x,y ou então no caso do 3D sequência de matrizes x, y.

 

Muito bom,

PeJuGe.

Share this post


Link to post
Share on other sites
Mock    32
Mock

amagad :o

tribonacci, e essas outras ai eu nao conhecia

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×