Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2017
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.95 KB | None | 0 0
  1.  
  2. Private tmr As CTiming
  3.  
  4. Private Sub Main()
  5. Set tmr = New CTiming
  6. Dim x As Long
  7. Dim MENSAJE As String
  8.  
  9.  
  10. MENSAJE = "**PRUEBA CON NUMEROS POSITIVOS HASTA EL MAX**" & vbNewLine
  11. tmr.Reset
  12. For x = 0 To 46340
  13. Call IsFibonacci7913(x)
  14. Next
  15. MENSAJE = MENSAJE & "7913: " & tmr.sElapsed & vbNewLine
  16. tmr.Reset
  17. For x = 0 To 46340
  18. Call isFibbonacci(x)
  19. Next
  20. MENSAJE = MENSAJE & "BZro: " & tmr.sElapsed & vbNewLine
  21. tmr.Reset
  22. For x = 0 To 46340
  23. Call IsFibonacci(x)
  24. Next
  25. MENSAJE = MENSAJE & "E__C: " & tmr.sElapsed & vbNewLine
  26. tmr.Reset
  27. For x = 0 To 46340
  28. Call IsFibonacciMrFrog(x)
  29. Next
  30. MENSAJE = MENSAJE & "Frog: " & tmr.sElapsed & vbNewLine
  31. tmr.Reset
  32. For x = 0 To 46340
  33. Call isFibbonacciNum(x)
  34. Next
  35. MENSAJE = MENSAJE & "Dark: " & tmr.sElapsed & vbNewLine
  36.  
  37.  
  38. Open App.Path & "Output.txt" For Output As #1
  39. Write #1, "******TEST HECHO POR 79137913******"
  40. Close #1
  41. Open App.Path & "Output.txt" For Append As #1
  42. Print #1, MENSAJE
  43. Close #1
  44. Shell "notepad.exe " & App.Path & "Output.txt", vbMaximizedFocus
  45. End
  46. End Sub
  47.  
  48. Public Function IsFibonacci(ByRef lNumber As Long) As Boolean
  49. Dim i As Long 'anterior
  50. Dim y As Long 'actual
  51. Dim x As Long 'Restultado a checkear
  52. i = 1
  53. y = 1
  54. Do While x < lNumber
  55. x = i + y
  56. i = y
  57. y = x
  58. If x = lNumber Then IsFibonacci = True: Exit Function
  59. Loop
  60. IsFibonacci = False
  61. End Function
  62. Function isFibbonacciNum(ByVal lNumber As Long) As Boolean
  63.  
  64. Dim Fn0 As Double
  65. Dim Fn1 As Double
  66. Dim i As Double
  67. Dim Num As Double
  68.  
  69. Fn0 = 0
  70. Fn1 = 1
  71.  
  72. isFibbonacciNum = False
  73.  
  74. If lNumber = 0 Or lNumber = 1 Then isFibbonacciNum = True: Exit Function
  75.  
  76. For i = 1 To lNumber
  77.  
  78. Num = Fn0 + Fn1
  79.  
  80. Fn0 = Fn1
  81. Fn1 = Num
  82.  
  83. If Num = lNumber Then isFibbonacciNum = True: Exit Function
  84.  
  85. If Num > lNumber Then Exit Function
  86.  
  87. Next
  88.  
  89. End Function
  90. Public Static Function IsFibonacciMrFrog(ByVal lngNumber As Long) As Boolean
  91. Dim dblRaised As Double
  92. Dim dblSum As Double
  93. Dim dblSqr As Double
  94.  
  95. dblRaised = lngNumber * lngNumber
  96. dblSum = dblRaised + dblRaised + dblRaised + dblRaised + dblRaised + &H4
  97. dblSqr = Sqr(dblSum)
  98. IsFibonacciMrFrog = (dblSqr - Int(dblSqr) = &H0)
  99. If IsFibonacciMrFrog Then Exit Function
  100. dblSum = dblSum - &H8
  101. dblSqr = Sqr(dblSum)
  102. IsFibonacciMrFrog = (dblSqr - Int(dblSqr) = &H0)
  103. End Function
  104. Function isFibbonacci(ByVal vVal&) As Boolean
  105. Dim dbl_v#(0 To 1)
  106. Dim byt_i As Byte
  107. dbl_v#(1) = 1
  108. dbl_v#(0) = 0
  109. Do Until dbl_v#(byt_i) >= vVal&
  110. dbl_v#(byt_i) = dbl_v#(byt_i) + dbl_v#(byt_i Xor 1)
  111. byt_i = byt_i Xor 1
  112. Loop
  113. If dbl_v#(0) = vVal& Or dbl_v#(1) = vVal& Then
  114. isFibbonacci = True
  115. End If
  116. End Function
  117. Private Function IsFibonacci7913(ByVal N As Long) As Boolean
  118. ' If N < &H0 Then
  119. ' If N = -1 Then IsFibonacci7913 = True: Exit Function
  120. ' Dim Neg0 As Double
  121. ' Dim Neg1 As Double
  122. ' Dim Neg2 As Double
  123. ' Neg0 = &H0
  124. ' Neg1 = &H1
  125. ' Do While Not (Neg1 < N)
  126. ' Neg2 = Neg0
  127. ' Neg0 = Neg1
  128. ' Neg1 = (Neg2 - Neg0)
  129. ' Loop
  130. ' If N = Neg2 Then IsFibonacci7913 = True
  131. ' Exit Function
  132. ' End If
  133. If N = &H0 Then IsFibonacci7913 = True: Exit Function
  134. Dim Aux0 As Double
  135. Dim Aux1 As Double
  136. Dim Aux2 As Double
  137. Aux2 = N * N
  138. Aux2 = Aux2 + Aux2 + Aux2 + Aux2 + Aux2
  139. Aux1 = Aux2 + &H4
  140. Aux1 = Sqr(Aux1)
  141. If Aux1 - (CLng(Aux1)) = &H0 Then IsFibonacci7913 = True: Exit Function
  142. Aux0 = Aux2 - &H4
  143. Aux0 = Sqr(Aux0)
  144. If Aux0 - (CLng(Aux0)) = &H0 Then IsFibonacci7913 = True
  145. End Function
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement