Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - BlackZeroX

#131
Cita de: Elemental Code en 10 Febrero 2013, 05:42 AM
si te lo pide con popup...

no podes usar esto asi:

Usuario:Contraceña@SitioWebOCosoConWeb.com

Entendes?
Usuario --> Tu usuario
: --> Dos puntos, uno arribita del otro.
Contraceña --> Tu contraceña
@ --> Arroba, es un dibujito medio raro, es como la de tu email.
SitioWebOCosoConWeb.com --> La pagina que queres abrir con el webbrowser.

Madre mía... hay que ver para creer; Desactiva tu modo "rustico".

Dulces Lunas!¡.
#132
Cita de: smdiegoarmando en  4 Febrero 2013, 03:35 AM
Sinceramente no se como desenvolver el programa

¿No sabes resolverlo manualmente? madre es una suma y tal cual lo harías manual se hace en C solo que con "coordenadas"...

Mira Esto

Dulces Lunas!¡.
#133
Cita de: Psyke1 en  3 Febrero 2013, 02:39 AM
Black, tu algoritmo está incompleto. Tu sacas el primer palíndromo que encuentra. Pero debe de ser el mayor posible.

Por lo menos cumple para 3 cifras.

Dulces Lunas!¡.
#134
El domingo que vuelva lo mejoro nos vemos.


 9009          91            99
906609        913           993
91800819      9181          9999
9028118209    91001         99209
903231132309                910129        992421
90189288298109              9100009       9910901


Aquí se las dejo:
Código (vb) [Seleccionar]

Option Explicit

Private Sub Form_Load()
   ' Es exponencialmente lento  el calculo.
   MsgBox PE4_BlackZeroX(2)
   MsgBox PE4_BlackZeroX(3)
   MsgBox PE4_BlackZeroX(4)
   MsgBox PE4_BlackZeroX(5)
   MsgBox PE4_BlackZeroX(6)
   MsgBox PE4_BlackZeroX(7) '--> Desde aqui se vuelve muy lento...
   MsgBox PE4_BlackZeroX(8)
   MsgBox PE4_BlackZeroX(9)
   MsgBox PE4_BlackZeroX(10)
   MsgBox PE4_BlackZeroX(11)
End Sub

Public Function PE4_BlackZeroX(Optional ByVal bCifras As Byte = 3) As Double
Dim Value       As Double
Dim Low         As Long
Dim High        As Long
Dim LowLimit    As Long
Dim HighLimit   As Long
Dim i           As Double
Dim j           As Double

   If (bCifras < 2) Then Exit Function

   'Sabiendo que 91 * 99 = 9009 de igual manera sabiendo que solo agregar 2 numeros X (suponiendo 0)
   'en el centro, pero en sus laterales siempre habra 9 es de esperar que la multiplicación:
   '10 * (91 * 99) se acerque a 900009 pero JAMAS será esacta, aun que estos Dos numeros se acercan
   'a los dos numeros que multiplicados dan un numero Palindromo...

   Low = 91 * 10 ^ (bCifras - 2)
   LowLimit = Low + 10 ^ (bCifras - 2)
   High = 99 * 10 ^ (bCifras - 2)
   HighLimit = High + 10 ^ (bCifras - 2) - 1

   For i = Low To LowLimit
       For j = High To HighLimit
           Value = (i * j)
           If (isValid(Value, bCifras * 2)) Then
               PE4_BlackZeroX = Value
               Exit Function
           End If
       Next
   Next

   PE4_BlackZeroX = -1

End Function

Public Function isValid(ByVal Natural As Double, ByVal lenght As Long) As Boolean
Dim High        As Long
Dim Low         As Long
Dim Fraction    As Double
Dim Pow         As Double

   Pow = (10 ^ (lenght - 1))

   Do While (Natural > 0) And (Pow > 0)
       High = Fix(Natural / Pow)
       Fraction = Natural / &HA&
       Natural = Fix(Fraction)
       Low = (Fraction - Natural) * &HA&

       If Not (Low = High) Then
           isValid = False
           Exit Function
       End If
       Pow = (Pow / &HA&)
       Natural = Natural - (High * Pow)
       Pow = (Pow / &HA&)
   Loop

   isValid = True

End Function


Dulces Lunas!¡.
#135
Tal vez esta versión no sea rápida pero usa una generación de números primos que se deseaban...

Código (vb) [Seleccionar]

Option Explicit
Option Base 0

Dim ManagerPrime    As clsPrime

Private Sub Form_Load()
   Set ManagerPrime = New clsPrime

    Call ManagerPrime.Clear
    MsgBox ManagerPrime.ItsPrime(6857)
    MsgBox "Para calcular si fue primo se calcularon " & ManagerPrime.CountPrime() & " numeros primos."
    Call ManagerPrime.Clear
   
   ManagerPrime.BufferLimitIndex(7000) = &H7FFFFFFF
   MsgBox ProyectEuler3_ByBlack
   
   Set ManagerPrime = Nothing
End Sub

Public Function ProyectEuler3_ByBlack(Optional ByVal lNumber As Double = 600851475143#) As Double
'Dim ManagerPrime    As clsPrime
Dim auxn            As Double
Dim auxd            As Double
Dim i               As Long
   'Set ManagerPrime = New clsPrime
   While lNumber > 1
       DoEvents
       auxd = lNumber / ManagerPrime.Prime(i)
       auxn = Fix(auxd)
       If (auxd = auxn) Then
           lNumber = auxn
       Else
           i = (i + 1)
       End If
   Wend
   ProyectEuler3_ByBlack = ManagerPrime.Prime(i)
   'Set ManagerPrime = Nothing
End Function


clsPrime.cls
Código (vb) [Seleccionar]

Option Explicit
Option Base 0

Private m_N             As Long
Private m_Now           As Long
Private m_Arr()         As Long
Const MAX_LIMIT_VALUE   As Long = &H7FFFFFFF

Private Sub Class_Initialize()
   Clear
End Sub

Private Function Calculate(ByVal Start As Long, Optional ByVal MaxLimitValue As Long = MAX_LIMIT_VALUE) As Long
Dim j As Long
   
   For m_Now = Start To MaxLimitValue
   
       j = (m_Now - 1)
       
       Do While (m_Now Mod j <> 0)
           j = (j - 1)
       Loop
       
       If (j < 2) Then
           Calculate = m_Now
           Exit Function
       End If
   Next
   
   Calculate = &H80000000
   
End Function

Public Sub Clear()
   m_N = 0
   m_Now = 2
   ReDim m_Arr(m_N)
   m_Arr(m_N) = 2
End Sub

Public Property Let BufferLimitIndex(Optional ByVal MaxLimitValue As Long = MAX_LIMIT_VALUE, ByVal n As Long)
Dim lRes        As Long
Dim lNow        As Long
   
   Do While (m_N < n)
       lRes = Calculate(m_Now + 1, MaxLimitValue)
       If (lRes And &H80000000) Then
           Exit Do
       Else
           m_N = (m_N + 1)
           ReDim Preserve m_Arr(m_N)
           m_Arr(m_N) = lRes
       End If
   Loop
End Property

Public Property Get CountPrime() As Long
   CountPrime = (m_N + 1)
End Property

Public Property Get BufferLimitIndex(Optional ByVal MaxLimitValue As Long = MAX_LIMIT_VALUE) As Long
   BufferLimitIndex = m_N
End Property

Public Function Prime(ByVal Index As Long, Optional ByVal MaxLimitValue As Long = MAX_LIMIT_VALUE) As Long
Dim lRes        As Long
   Prime = &H80000000
   If Index > m_N Then
       BufferLimitIndex(MaxLimitValue) = Index
       If Not (Index = m_N) Then Exit Function
   End If
   Prime = m_Arr(Index)
End Function

Public Function ItsPrime(ByVal Value As Long) As Boolean
Dim i       As Long
Dim lRes    As Long

   ItsPrime = True
   
   If (m_Now < Value) Then

       Do
           lRes = Prime(m_N + 1, Value)
           If (lRes And &H80000000) Then Exit Do
       Loop While (m_Arr(m_N) < Value)
       
       If Not (m_Arr(m_N) = Value) Then ItsPrime = False
       
   Else
       For i = 0 To m_N
           If (m_Arr(i) = Value) Then Exit For
       Next
       
       ItsPrime = False
       
   End If
   
End Function

Private Sub Class_Terminate()
   Call Clear
End Sub


Dulces Lunas!¡.
#136
.
El perico es verde en cualquier parte.

@Psyke1
¿Cual trampa? nadie dijo que NO se podía hacer lo que hice...

Dulces Lunas!¡.
#137
Me trae sin cuidado por ahora la velocidad...

Código (vb) [Seleccionar]

Option Explicit
Option Base 0

Public Function ProyectEuler3_ByBlack(Optional ByVal lNumber As Double = 600851475143#) As Double
Dim arr()   As Variant
Dim auxn    As Double
Dim auxd    As Double
Dim i       As Long
   arr = Array(2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, _
               859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997, 1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, 1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, 1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, 1901, 1907, 1913, 1931, 1933, _
               1949, 1951, 1973, 1979, 1987, 1993, 1997, 1999, 2003, 2011, 2017, 2027, 2029, 2039, 2053, 2063, 2069, 2081, 2083, 2087, 2089, 2099, 2111, 2113, 2129, 2131, 2137, 2141, 2143, 2153, 2161, 2179, 2203, 2207, 2213, 2221, 2237, 2239, 2243, 2251, 2267, 2269, 2273, 2281, 2287, 2293, 2297, 2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, 2371, 2377, 2381, 2383, 2389, 2393, 2399, 2411, 2417, 2423, 2437, 2441, 2447, 2459, 2467, 2473, 2477, 2503, 2521, 2531, 2539, 2543, 2549, 2551, 2557, 2579, 2591, 2593, 2609, 2617, 2621, 2633, 2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, 2689, 2693, 2699, 2707, 2711, 2713, 2719, 2729, 2731, 2741, 2749, 2753, 2767, 2777, 2789, 2791, 2797, 2801, 2803, 2819, 2833, 2837, 2843, 2851, 2857, 2861, 2879, 2887, 2897, 2903, 2909, 2917, 2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999, 3001, 3011, 3019, 3023, 3037, 3041, 3049, 3061, 3067, 3079, 3083, 3089, _
               3109, 3119, 3121, 3137, 3163, 3167, 3169, 3181, 3187, 3191, 3203, 3209, 3217, 3221, 3229, 3251, 3253, 3257, 3259, 3271, 3299, 3301, 3307, 3313, 3319, 3323, 3329, 3331, 3343, 3347, 3359, 3361, 3371, 3373, 3389, 3391, 3407, 3413, 3433, 3449, 3457, 3461, 3463, 3467, 3469, 3491, 3499, 3511, 3517, 3527, 3529, 3533, 3539, 3541, 3547, 3557, 3559, 3571, 3581, 3583, 3593, 3607, 3613, 3617, 3623, 3631, 3637, 3643, 3659, 3671, 3673, 3677, 3691, 3697, 3701, 3709, 3719, 3727, 3733, 3739, 3761, 3767, 3769, 3779, 3793, 3797, 3803, 3821, 3823, 3833, 3847, 3851, 3853, 3863, 3877, 3881, 3889, 3907, 3911, 3917, 3919, 3923, 3929, 3931, 3943, 3947, 3967, 3989, 4001, 4003, 4007, 4013, 4019, 4021, 4027, 4049, 4051, 4057, 4073, 4079, 4091, 4093, 4099, 4111, 4127, 4129, 4133, 4139, 4153, 4157, 4159, 4177, 4201, 4211, 4217, 4219, 4229, 4231, 4241, 4243, 4253, 4259, 4261, 4271, 4273, 4283, 4289, _
               4297, 4327, 4337, 4339, 4349, 4357, 4363, 4373, 4391, 4397, 4409, 4421, 4423, 4441, 4447, 4451, 4457, 4463, 4481, 4483, 4493, 4507, 4513, 4517, 4519, 4523, 4547, 4549, 4561, 4567, 4583, 4591, 4597, 4603, 4621, 4637, 4639, 4643, 4649, 4651, 4657, 4663, 4673, 4679, 4691, 4703, 4721, 4723, 4729, 4733, 4751, 4759, 4783, 4787, 4789, 4793, 4799, 4801, 4813, 4817, 4831, 4861, 4871, 4877, 4889, 4903, 4909, 4919, 4931, 4933, 4937, 4943, 4951, 4957, 4967, 4969, 4973, 4987, 4993, 4999, 5003, 5009, 5011, 5021, 5023, 5039, 5051, 5059, 5077, 5081, 5087, 5099, 5101, 5107, 5113, 5119, 5147, 5153, 5167, 5171, 5179, 5189, 5197, 5209, 5227, 5231, 5233, 5237, 5261, 5273, 5279, 5281, 5297, 5303, 5309, 5323, 5333, 5347, 5351, 5381, 5387, 5393, 5399, 5407, 5413, 5417, 5419, 5431, 5437, 5441, 5443, 5449, 5471, 5477, 5479, 5483, 5501, 5503, 5507, 5519, 5521, 5527, 5531, 5557, 5563, 5569, 5573, _
               5581, 5591, 5623, 5639, 5641, 5647, 5651, 5653, 5657, 5659, 5669, 5683, 5689, 5693, 5701, 5711, 5717, 5737, 5741, 5743, 5749, 5779, 5783, 5791, 5801, 5807, 5813, 5821, 5827, 5839, 5843, 5849, 5851, 5857, 5861, 5867, 5869, 5879, 5881, 5897, 5903, 5923, 5927, 5939, 5953, 5981, 5987, 6007, 6011, 6029, 6037, 6043, 6047, 6053, 6067, 6073, 6079, 6089, 6091, 6101, 6113, 6121, 6131, 6133, 6143, 6151, 6163, 6173, 6197, 6199, 6203, 6211, 6217, 6221, 6229, 6247, 6257, 6263, 6269, 6271, 6277, 6287, 6299, 6301, 6311, 6317, 6323, 6329, 6337, 6343, 6353, 6359, 6361, 6367, 6373, 6379, 6389, 6397, 6421, 6427, 6449, 6451, 6469, 6473, 6481, 6491, 6521, 6529, 6547, 6551, 6553, 6563, 6569, 6571, 6577, 6581, 6599, 6607, 6619, 6637, 6653, 6659, 6661, 6673, 6679, 6689, 6691, 6701, 6703, 6709, 6719, 6733, 6737, 6761, 6763, 6779, 6781, 6791, 6793, 6803, 6823, 6827, 6829, 6833, 6841, 6857, 6863, _
               6869, 6871, 6883, 6899, 6907, 6911, 6917, 6947, 6949, 6959, 6961, 6967, 6971, 6977, 6983, 6991, 6997, 7001, 7013, 7019, 7027, 7039, 7043, 7057, 7069, 7079, 7103, 7109, 7121, 7127, 7129, 7151, 7159, 7177, 7187, 7193, 7207, 7211, 7213, 7219, 7229, 7237, 7243, 7247, 7253, 7283, 7297, 7307, 7309, 7321, 7331, 7333, 7349, 7351, 7369, 7393, 7411, 7417, 7433, 7451, 7457, 7459, 7477, 7481, 7487, 7489, 7499, 7507, 7517, 7523, 7529, 7537, 7541, 7547, 7549, 7559, 7561, 7573, 7577, 7583, 7589, 7591, 7603, 7607, 7621, 7639, 7643, 7649, 7669, 7673, 7681, 7687, 7691, 7699, 7703, 7717, 7723, 7727, 7741, 7753, 7757, 7759, 7789, 7793, 7817, 7823, 7829, 7841, 7853, 7867, 7873, 7877, 7879, 7883, 7901, 7907, 7919, 7927, 7933, 7937, 7949, 7951, 7963, 7993, 8009, 8011, 8017, 8039, 8053, 8059, 8069, 8081, 8087, 8089, 8093, 8101, 8111, 8117, 8123, 8147, 8161, 8167, 8171, 8179, 8191, 8209, 8219, _
               8221, 8231, 8233, 8237, 8243, 8263, 8269, 8273, 8287, 8291, 8293, 8297, 8311, 8317, 8329, 8353, 8363, 8369, 8377, 8387, 8389, 8419, 8423, 8429, 8431, 8443, 8447, 8461, 8467, 8501, 8513, 8521, 8527, 8537, 8539, 8543, 8563, 8573, 8581, 8597, 8599, 8609, 8623, 8627, 8629, 8641, 8647, 8663, 8669, 8677, 8681, 8689, 8693, 8699, 8707, 8713, 8719, 8731, 8737, 8741, 8747, 8753, 8761, 8779, 8783, 8803, 8807, 8819, 8821, 8831, 8837, 8839, 8849, 8861, 8863, 8867, 8887, 8893, 8923, 8929, 8933, 8941, 8951, 8963, 8969, 8971, 8999, 9001, 9007, 9011, 9013, 9029, 9041, 9043, 9049, 9059, 9067, 9091, 9103, 9109, 9127, 9133, 9137, 9151, 9157, 9161, 9173, 9181, 9187, 9199, 9203, 9209, 9221, 9227, 9239, 9241, 9257, 9277, 9281, 9283, 9293, 9311, 9319, 9323, 9337, 9341, 9343, 9349, 9371, 9377, 9391, 9397, 9403, 9413, 9419, 9421, 9431, 9433, 9437, 9439, 9461, 9463, 9467, 9473, 9479, 9491, 9497, _
               9511, 9521, 9533, 9539, 9547, 9551, 9587, 9601, 9613, 9619, 9623, 9629, 9631, 9643, 9649, 9661, 9677, 9679, 9689, 9697, 9719, 9721, 9733, 9739, 9743, 9749, 9767, 9769, 9781, 9787, 9791, 9803, 9811, 9817, 9829, 9833, 9839, 9851, 9857, 9859, 9871, 9883, 9887, 9901, 9907, 9923, 9929, 9931, 9941, 9949, 9967, 9973, 10007, 10009, 10037, 10039, 10061, 10067, 10069, 10079, 10091, 10093, 10099, 10103, 10111, 10133, 10139, 10141, 10151, 10159, 10163, 10169, 10177, 10181, 10193, 10211, 10223, 10243, 10247, 10253, 10259, 10267, 10271, 10273, 10289, 10301, 10303, 10313, 10321, 10331, 10333, 10337, 10343, 10357, 10369, 10391, 10399, 10427, 10429, 10433, 10453, 10457, 10459, 10463, 10477, 10487, 10499, 10501, 10513, 10529, 10531, 10559, 10567, 10589, 10597, 10601, 10607, 10613, 10627, 10631, 10639, 10651, 10657, 10663, 10667, 10687, 10691, 10709, 10711, 10723, 10729, 10733, 10739, 10753, 10771, 10781, 10789, 10799, 10831, 10837, 10847, 10853, 10859, 10861, 10867, 10883, 10889, _
               10891, 10903, 10909, 10937, 10939, 10949, 10957, 10973, 10979, 10987, 10993, 11003, 11027, 11047, 11057, 11059, 11069, 11071, 11083, 11087, 11093, 11113, 11117, 11119, 11131, 11149, 11159, 11161, 11171, 11173, 11177, 11197, 11213, 11239, 11243, 11251, 11257, 11261, 11273, 11279, 11287, 11299, 11311, 11317, 11321, 11329, 11351, 11353, 11369, 11383, 11393, 11399, 11411, 11423, 11437, 11443, 11447, 11467, 11471, 11483, 11489, 11491, 11497, 11503, 11519, 11527, 11549, 11551, 11579, 11587, 11593, 11597, 11617, 11621, 11633, 11657, 11677, 11681, 11689, 11699, 11701, 11717, 11719, 11731, 11743, 11777, 11779, 11783, 11789, 11801, 11807, 11813, 11821, 11827, 11831, 11833, 11839, 11863, 11867, 11887, 11897, 11903, 11909, 11923, 11927, 11933, 11939, 11941, 11953, 11959, 11969, 11971, 11981, 11987, 12007, 12011, 12037, 12041, 12043, 12049, 12071, 12073, 12097, 12101, 12107, 12109, 12113, 12119, 12143, 12149, 12157, 12161, 12163, 12197, 12203, 12211, 12227, 12239, 12241, 12251, _
               12253, 12263, 12269, 12277, 12281, 12289, 12301, 12323, 12329, 12343, 12347, 12373, 12377, 12379, 12391, 12401, 12409, 12413, 12421, 12433, 12437, 12451, 12457, 12473, 12479, 12487, 12491, 12497, 12503, 12511, 12517, 12527, 12539, 12541, 12547, 12553, 12569, 12577, 12583, 12589, 12601, 12611, 12613, 12619, 12637, 12641, 12647, 12653, 12659, 12671, 12689, 12697, 12703, 12713, 12721, 12739, 12743, 12757, 12763, 12781, 12791, 12799, 12809, 12821, 12823, 12829, 12841, 12853, 12889, 12893, 12899, 12907, 12911, 12917, 12919, 12923, 12941, 12953, 12959, 12967, 12973, 12979, 12983, 13001, 13003, 13007, 13009, 13033, 13037, 13043, 13049, 13063, 13093, 13099, 13103, 13109, 13121, 13127, 13147, 13151, 13159, 13163, 13171, 13177, 13183, 13187, 13217, 13219, 13229, 13241, 13249, 13259, 13267, 13291, 13297, 13309, 13313, 13327, 13331, 13337, 13339, 13367, 13381, 13397, 13399, 13411, 13417, 13421, 13441, 13451, 13457, 13463, 13469, 13477, 13487, 13499, 13513, 13523, 13537, 13553, _
               13567, 13577, 13591, 13597, 13613, 13619, 13627, 13633, 13649, 13669, 13679, 13681, 13687, 13691, 13693, 13697, 13709, 13711, 13721, 13723, 13729, 13751, 13757, 13759, 13763, 13781, 13789, 13799, 13807, 13829, 13831, 13841, 13859, 13873, 13877, 13879, 13883, 13901, 13903, 13907, 13913, 13921, 13931, 13933, 13963, 13967, 13997, 13999, 14009, 14011, 14029, 14033, 14051, 14057, 14071, 14081, 14083, 14087, 14107, 14143, 14149, 14153, 14159, 14173, 14177, 14197, 14207, 14221, 14243, 14249, 14251, 14281, 14293, 14303, 14321, 14323, 14327, 14341, 14347, 14369, 14387, 14389, 14401, 14407, 14411, 14419, 14423, 14431, 14437, 14447, 14449, 14461, 14479, 14489, 14503, 14519, 14533, 14537, 14543, 14549, 14551, 14557, 14561, 14563, 14591, 14593, 14621, 14627, 14629, 14633, 14639, 14653, 14657, 14669, 14683, 14699, 14713, 14717, 14723, 14731, 14737, 14741, 14747, 14753, 14759, 14767, 14771, 14779, 14783, 14797, 14813, 14821, 14827, 14831, 14843, 14851, 14867, 14869, 14879, 14887, _
               14891, 14897, 14923, 14929, 14939, 14947, 14951, 14957, 14969, 14983, 15013, 15017, 15031, 15053, 15061, 15073, 15077, 15083, 15091, 15101, 15107)
   While lNumber > 1
       auxd = lNumber / arr(i)
       auxn = Fix(auxd)
       If (auxd = auxn) Then
           lNumber = auxn
       Else
           i = (i + 1)
       End If
   Wend
   ProyectEuler3_ByBlack = arr(i)
End Function


No estoy loco para calcular cada uno a mano...


Option Explicit
Option Base 0

Private Sub Form_Load()
Dim i As Long
Dim j As Long
Dim ln As Integer
Dim c As Integer
Dim sBuff As String
Const LIMIT As Long = 5000

   ln = 1
   
   For i = 2 To &H7FFFFFFF
       j = (i - 1)
       While (i Mod j <> 0)
           j = (j - 1)
       Wend
       
       If (j < 2) Then
           c = (c + 1)
           If (ln = 50) Then
               ln = 1
               sBuff = sBuff & i & " _" & vbCrLf
           Else
               sBuff = sBuff & i & " ,"
           End If
           ln = (ln + 1)
           If (c = LIMIT) Then Exit For
       End If
   Next
   
   ' Muestro de poco en poco con una interrupción... NO TODOS LOS NÚMEROS CABEN EN EL ARRAY.
   Debug.Print Mid$(sBuff, 1, 1000)
   Debug.Print Mid$(sBuff, 1001, 1000)
   Debug.Print Mid$(sBuff, 2001, 1000)
   Debug.Print Mid$(sBuff, 3001, 1000)
   Debug.Print Mid$(sBuff, 4001, 1000)
   Debug.Print Mid$(sBuff, 5001, 1000)
   Debug.Print Mid$(sBuff, 6001, 1000)
   Debug.Print Mid$(sBuff, 7001, 1000)
   Debug.Print Mid$(sBuff, 8001, 1000)
   Debug.Print Mid$(sBuff, 9001, 1000)
   Debug.Print Mid$(sBuff, 10001, 1000)
   Debug.Print Mid$(sBuff, 11001, 1000)
   Debug.Print Mid$(sBuff, 12001, 1000)
   Debug.Print Mid$(sBuff, 13001, 1000)
   Debug.Print Mid$(sBuff, 14001, 1000)
   Debug.Print Mid$(sBuff, 15001, 1000)
   Debug.Print Mid$(sBuff, 16001, 1000)
   Debug.Print Mid$(sBuff, 17001, 1000)
   Debug.Print Mid$(sBuff, 18001, 1000)
   Debug.Print Mid$(sBuff, 19001, 1000)
   Debug.Print Mid$(sBuff, 20001, 1000)
   Debug.Print Mid$(sBuff, 21001, 1000)
   Debug.Print Mid$(sBuff, 22001, 1000)
   Debug.Print Mid$(sBuff, 23001, 1000)
   Debug.Print Mid$(sBuff, 24001, 1000)
   Debug.Print Mid$(sBuff, 25001, 1000)

End Sub


Dulces Lunas!¡.
#138
Cita de: apuromafo en 29 Enero 2013, 01:00 AM
trabajaras con numeros:

Código (vb) [Seleccionar]
Private Sub Command1_Click()
Dim n As Integer           
Dim suma As Integer   
Dim pro As Integer

una optimizacion seria en vb.net podria ser:
Código (vb) [Seleccionar]
dim n,suma,pro,contador As integer


Eso NO es una optimización.

Cita de: apuromafo en 29 Enero 2013, 01:00 AM
insisto, aun no veo que filtren que datos son ingresados, si es realmente un numero entre 0 y cierto valor, por ejemplo que sumen un 8, cuando tenia notas del 0 al 7

Esta aprendiendo... total primero que aprenda. Cuando uno programa en capas (las capas pueden tener capas) se hacen cosas similares dejando a otras capas hacer este trabajo habitualmente esto se hace en la POO.

Dulces Lunas!¡.
#139
Cita de: imoen en 25 Enero 2013, 23:50 PM
y estamos seguros que distribuir la carga a cada core es mas lento que la formulita matematica ?¿

Has un benchmark EN CUALQUIER LENGUAJE y nos cuentas.

Dulces Lunas!¡.
#140
Cita de: imoen en 25 Enero 2013, 12:32 PM
Una cosa el código sea lento no significa que sea el peor , pq insisto en que los códigos deben ser legibles y entendibles por cualquiera , un codigo muy veloz pero ofuscado tampoco es rentable a pesar de ser muy rapido pero bueno , que esta muy bien que haya de todo :)

Los análisis matemáticos para no dejarle la carga a el CPU no es igual a ofuscar el código... de hecho cuando se tienen limitan-tes como en los PICS se deben usar mucho las matemáticas de cualquier índole.

Cita de: imoen en 25 Enero 2013, 12:46 PM
Pues te lanzo la version del reto 1.1

Como hay que hacerlo rapido , y di distribuyes cada calculo de busqueda los 3 por un lado y los 5 por el otro , peroo cada bloque aun core distinto del procesador :P  ( tambien me sirve si haces dos hilos y ejecutas los hilos a la vez ) uhh , en el caso de no haber cores pero tener HT pues es lo mismo, lo que no se es si VB6 permite el balanceo de carga por nucleos :P

bs imoen

PD -> como lo flipo ehh XDDD

Los hilos y balanceo por núcleo es inestable en VB6... sin en cambio solo son llamadas a APIS.

El código en C se parecería algo así... en VB6 sería prácticamente lo mismo.

void threadFunc()
{
    //  Codigo...
    ExitThread (dwAlgunValor);
}

// Los siguiente en algún proceso X como main()...

GetSystemInfo(&sysInfo);
printf("Numero de nucleos: %d.\n", (int)sysInfo.dwNumberOfProcessors);
hThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)threadFunc, NULL, 0, &dwThreadId);

if (SetThreadAffinityMask(hThread, 1 << (bCoreToUse % 8)) != 0)
printf("ThreadAffinity se establecio con exito en el nucleo %d.\n", (int)bCoreToUse);
else
printf("ThreadAffinity error! El sistema repartira la carga del Thread!");

        if (!GetExitCodeThread (hThread, &dwRes)
printf("Imposible de obtener el resultado del hilo");
...



Aun así este proceso es MUY LENTO cuando ya se a generado una formula matemática a lápiz y papel la cual es la mas optima posible.

P.D.: Los programadores estamos muchos años atrasados en la tecnología debido a que SIEMPRE le dejamos el trabajo pesado al hardware...

Dulces Lunas!¡.