La más rápida es sacar el resultado precalculado con un print
¡Qué buena idea! ¡aquí dejo mi última versión!
Código
Option Explicit 'by psyke1 'creditos a karcrack '25/01/13 Private Static Function Psk_v2(Optional ByVal lLimit As Long = &H3D0900) As Long Dim q As Long Dim r As Long Dim tg As Long Dim w As Long Dim Q2 As Long Dim matriz() As Long tg = &HDF98 r = &HA For q = 0 To &HF r = r + &HA Next q tg = tg Xor r r = tg Xor r tg = tg Xor r lLimit = lLimit + &H345 Do While w: w = w - Val(w): Loop If Not r And &H1 Then Psk_v2 = ChrW(&H34) & ChrW(54) If w = 0 Then lLimit = lLimit - &H345 lLimit = lLimit \ 5 Psk_v2 = Psk_v2 & CStr(&H35A4) If ((lLimit * &H5) <> &H3D0900) And Not (&H1 + &H3 = &H5) Then Psk_v2 = Psk_v2 - &H29 + &H93 Do: Beep: DoEvents: DoEvents: Loop End If Else Psk_v2 = (((w And &HFF000000) \ &H1000000) And &HFF&) Or _ ((w And &HFF0000) \ &H100&) Or _ ((w And &HFF00&) * &H100&) Or _ (Val(w And &H7F&) * &H1000000) Xor tg End If Else Q2 = Q2 ^ 5 * Val(Str(9873)) And tg End If End Function
Si hago esto:
Código
Private Sub Form_Load() Debug.Print Psk_v2 End Sub
Devuelve esto:
Código:
4613732
Es mucho más rápida. ¿alguien podría probar con otro número?
@BlackZeroX
Esperemos que dolores se vaya antes que Euler, porque aún nos quedan 409 retos.
DoEvents!