Autor
|
Tema: [RETO] Determinar Número Perfecto (Leído 9,161 veces)
|
Miseryk
Desconectado
Mensajes: 225
SI.NU.SA U.GU.DE (2NE1 - D-Unit)
|
jajaja sí, yo a las funciones las llamo asd o sdav jajaja
|
|
|
En línea
|
Can you see it? The worst is over The monsters in my head are scared of love Fallen people listen up! It’s never too late to change our luck So, don’t let them steal your light Don’t let them break your stride There is light on the other side And you’ll see all the raindrops falling behind Make it out tonight it’s a revolution
CL!!!
|
|
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
HOLA!!! Hice una pequeña prueba con el maximo numero que soporta tu funcion y solo una llamada: For the record: Mi funcion recien empieza a tener un tiempo registrable luego de las 1000 llamadas (4ms) con 10000 llamadas llega a 47ms! Y por supuesto... Con el numero: 2305843008139952128 @Miseryk :En vez de buscar el ultimo digito de esa manera buscalo asi, ya que tu funcion no acepta numeros mayor que long te va a servir: Lastnum = Numero mod 10
GRACIAS POR LEER!!!
|
|
« Última modificación: 23 Octubre 2013, 16:52 pm por 79137913 »
|
En línea
|
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!" "La peor de las ignorancias es no saber corregirlas"
79137913 *Shadow Scouts Team*
|
|
|
Miseryk
Desconectado
Mensajes: 225
SI.NU.SA U.GU.DE (2NE1 - D-Unit)
|
Código Completo: Option Explicit '6 '28 '496 '8128 '33550336 '8589869056 '137438691328 '2305843008139952128 Public Function Misery_MOD(ByVal dividendo As Double, ByVal divisor As Double) As Double 'x / y = z 'y * z + R = x '10 / 3 = 3,333 '10 / 3 = 3 Misery_MOD = dividendo - (divisor * Fix(dividendo / divisor)) End Function Public Function IsPerfect(ByRef numero As Double) As Boolean Dim loopc As Double Dim calc As Double Dim LastNum As Byte Dim Max As Variant Max = Fix(CDbl(numero) / CDbl(2)) 'By 79137913 LastNum = numero Mod 10 If LastNum = 6 Or LastNum = 8 Then For loopc = Max To 1 Step -1 'If numero Mod loopc = 0 Then If Misery_MOD(numero, loopc) = 0 Then calc = calc + loopc If calc > numero Then IsPerfect = False Exit Function End If End If Next loopc End If IsPerfect = (calc = numero) End Function Private Sub Form_Load() 'MsgBox 33550336 Mod 10 MsgBox IsPerfect(33550336) End End Sub
Modificación_2
|
|
« Última modificación: 23 Octubre 2013, 17:05 pm por Miseryk »
|
En línea
|
Can you see it? The worst is over The monsters in my head are scared of love Fallen people listen up! It’s never too late to change our luck So, don’t let them steal your light Don’t let them break your stride There is light on the other side And you’ll see all the raindrops falling behind Make it out tonight it’s a revolution
CL!!!
|
|
|
Miseryk
Desconectado
Mensajes: 225
SI.NU.SA U.GU.DE (2NE1 - D-Unit)
|
HOLA!!! Hice una pequeña prueba con el maximo numero que soporta tu funcion y solo una llamada: For the record: Mi funcion recien empieza a tener un tiempo registrable luego de las 1000 llamadas (4ms) con 10000 llamadas llega a 47ms! Y por supuesto... Con el numero: 2305843008139952128 @Miseryk :En vez de buscar el ultimo digito de esa manera buscalo asi, ya que tu funcion no acepta numeros mayor que long te va a servir: Lastnum = Numero mod 10
GRACIAS POR LEER!!! Wow, interesante, no se me había ocurrido.
|
|
|
En línea
|
Can you see it? The worst is over The monsters in my head are scared of love Fallen people listen up! It’s never too late to change our luck So, don’t let them steal your light Don’t let them break your stride There is light on the other side And you’ll see all the raindrops falling behind Make it out tonight it’s a revolution
CL!!!
|
|
|
Miseryk
Desconectado
Mensajes: 225
SI.NU.SA U.GU.DE (2NE1 - D-Unit)
|
Estuve probando ésto en .NET que soporta números muy grandes, y la función que hiciste en números muy grandes retorna True en todos los números, estoy pasándolo a VB.NET para que lo veas mejor.
|
|
|
En línea
|
Can you see it? The worst is over The monsters in my head are scared of love Fallen people listen up! It’s never too late to change our luck So, don’t let them steal your light Don’t let them break your stride There is light on the other side And you’ll see all the raindrops falling behind Make it out tonight it’s a revolution
CL!!!
|
|
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
HOLA!!!
Esto es VB6!!!!!!!! (con el tono de "ESTO ES ESPARTAAAAAA")
Que el No-Compilador de Net sea idiota no es mi problema.-
GRACIAS POR LEER!!!
|
|
|
En línea
|
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!" "La peor de las ignorancias es no saber corregirlas"
79137913 *Shadow Scouts Team*
|
|
|
Miseryk
Desconectado
Mensajes: 225
SI.NU.SA U.GU.DE (2NE1 - D-Unit)
|
Nono, es cierto, me faltó una conversión de tu función a UInt64, el código funciona bien y muy rápido
|
|
|
En línea
|
Can you see it? The worst is over The monsters in my head are scared of love Fallen people listen up! It’s never too late to change our luck So, don’t let them steal your light Don’t let them break your stride There is light on the other side And you’ll see all the raindrops falling behind Make it out tonight it’s a revolution
CL!!!
|
|
|
Miseryk
Desconectado
Mensajes: 225
SI.NU.SA U.GU.DE (2NE1 - D-Unit)
|
Voy a esperar a ver quién más postea algún código mientras mejoro el mio.
Estoy en .NET (solamente por el número que uso para testear la función) utilizando como prueba el número perfecto 2305843008139952128
Con respecto a los resultados en y con: SO: Windows 7 Ultimate 64 bits Procesador: Intel(R) Core(TM) i5-3570K CPU @ 3.40Ghz 3.40GHz Memoria instalada (RAM): 16,0 GB
79137913: Número: 2305843008139952128 Resultado: True Tiempo Milisegs: 0,0084 (EL MÍNIMO TIEMPO POSIBLE DE DEMASIADOS INTENTOS)
PD: el mio no lo muestro porque necesito una computadora quántica para que me diga el tiempo que tarda, pero estoy en éso.
|
|
« Última modificación: 23 Octubre 2013, 19:52 pm por Miseryk »
|
En línea
|
Can you see it? The worst is over The monsters in my head are scared of love Fallen people listen up! It’s never too late to change our luck So, don’t let them steal your light Don’t let them break your stride There is light on the other side And you’ll see all the raindrops falling behind Make it out tonight it’s a revolution
CL!!!
|
|
|
Miseryk
Desconectado
Mensajes: 225
SI.NU.SA U.GU.DE (2NE1 - D-Unit)
|
HOLA!!! Mi funcion puede verificar los numeros perfectos sin problema, probe con el ultimo que esta aca y lo verifica en menos de 0,1 ms .- Para que vean que lo que importa es el algoritmo no el lenguaje Private Function IsPerfect(N As Double) As Boolean Dim Sum As Double Dim Aux As Double Aux = N / 2 Sum = 1 + Aux Do While Aux > 2 If Fix(Aux / 2) < Aux / 2 Then Aux = Aux + 1 End If Aux = Aux / 2 Sum = Sum + Aux Loop IsPerfect = (N = Sum) End Function
Superenme GRACIAS POR LEER!!! Mientras estuve tratando de crear un algoritmo, me dí cuenta que esa función retorna mal algunos valores como por ejemplo: al verificar con el número 2 retorna Verdadero el cual no es perfecto. al verificar con el número 12 retorna Verdadero el cual no es perfecto. al verificar con el número 14 retorna Verdadero el cual no es perfecto. al verificar con el número 24 retorna Verdadero el cual no es perfecto. etc
|
|
|
En línea
|
Can you see it? The worst is over The monsters in my head are scared of love Fallen people listen up! It’s never too late to change our luck So, don’t let them steal your light Don’t let them break your stride There is light on the other side And you’ll see all the raindrops falling behind Make it out tonight it’s a revolution
CL!!!
|
|
|
79137913
Desconectado
Mensajes: 1.169
4 Esquinas
|
HOLA!!!
:O
Lo soluciono el lunes!
GRACIAS POR LEER!!!
|
|
|
En línea
|
"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!" "La peor de las ignorancias es no saber corregirlas"
79137913 *Shadow Scouts Team*
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
[RETO] Comprobar si un numero dado es un numero de la suerte
« 1 2 ... 5 6 »
Programación Visual Basic
|
Karcrack
|
53
|
23,651
|
17 Agosto 2010, 23:58 pm
por Dessa
|
|
|
Tengo una duda de como determinar los digitos de un número
« 1 2 »
Programación C/C++
|
Felipe_Henriquez
|
13
|
35,449
|
19 Agosto 2011, 04:22 am
por rir3760
|
|
|
programa que determine si numero es perfecto
Programación C/C++
|
jon_18
|
5
|
19,205
|
15 Agosto 2012, 17:28 pm
por Oblivi0n
|
|
|
[Aporte] Codigo para determinar el numero de barajas usadas en el juego de 21
Programación C/C++
|
AlbertoBSD
|
0
|
1,911
|
11 Junio 2016, 20:28 pm
por AlbertoBSD
|
|
|
[C++] Determinar el menor numero de billetas y monedas.
Programación C/C++
|
djpacheco3
|
5
|
4,733
|
4 Septiembre 2019, 02:12 am
por @XSStringManolo
|
|