Esta es De Mi amigo, Sub-Soul
Private Function IsFibonacciNumber(ByVal N As Long) As Boolean Dim X(2) As Long X(Chr(48)) = Chr(48) X(Chr(49)) = Chr(49) If X(Chr(50)) = X(Chr(48)) Or X(Chr(49)) Then IsFibonacciNumber = True If X(Chr(50)) <> N Then IsFibonacciNumber = False For X(Chr(50)) = Chr(48) To N X(Chr(50)) = X(Chr(48)) + X(Chr(49)) X(Chr(48)) = X(Chr(49)) X(Chr(49)) = X(Chr(50)) If X(Chr(50)) = N Then IsFibonacciNumber = True : Exit For DoEvents() Next End Function
Y esta es mi funcion xD
Public Function EsFibonacci(ByVal viNum As Short) As Boolean Dim vdDoble(1) As Double Dim vbByt As Byte If Not viNum And &H7FFF Then 'solo hasta el mayor numero de short 32.767 vdDoble(0) = 0 vdDoble(1) = 1 Do Until vdDoble(vbByt) >= viNum vdDoble(vbByt) = vdDoble(vbByt) + vdDoble(vbByt Xor 1) vbByt = vbByt Xor 1 Loop If vdDoble(0) = viNum OrElse vdDoble(1) = viNum Then Return True End If End If End Function
Y esta funcion comprobada de la misma solo tarda 300 msec...lo hice de esta forma puesto a que en clases vimos compuertas logicas y me sirvio para usar bit nada mas...xor and y or como pueden ver xD :P esto es todo
Imprimir
No hay comentarios:
Publicar un comentario