[SNIPPET+RETO] IsItPrime() - Comprobar si un numero es primo

Iniciado por Karcrack, 7 Julio 2010, 12:31 PM

0 Miembros y 4 Visitantes están viendo este tema.

raul338

Cita de: Karcrack en  9 Julio 2010, 20:52 PM
Felicidades, fue divertido :P Habran mas de estos seguro >:D :xD

COBEIN WINS! Fatality :xD

Ps.... estare esperando haber si puedo participar :)


Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
:¬¬


cobein

http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.

Karcrack

Cita de: cobein en 10 Julio 2010, 05:31 AM
Hay un error en el codigo, despues lo corrijo.
Bueno, el error para quien quiera saberlo es que comprobaba mal la multiplicidad de 5...



Me he quedado hoy pensando... y hay una forma realmente sencilla de obtener el ultimo digito de una cifra... sin usar cadenas de textoooo :o Simplemente hay que obtener el resto al dividir por 10 (aka Mod 10) :laugh:

He hecho este codigo :D, si no me equivoco es la mas rapida (sin contar la de Cobein, que no acaba de funcionar)
Código (vb) [Seleccionar]
Public Function IsItPrime(ByVal lNumber As Long) As Boolean
    Dim i       As Long

    If lNumber < 10 Then
        If lNumber = 2 Then IsItPrime = True: Exit Function
        If lNumber = 5 Then IsItPrime = True: Exit Function
        If lNumber = 1 Then Exit Function
    ElseIf (lNumber And 1) Then
        Select Case (lNumber Mod 10)
            Case 1, 3, 7, 9
                For i = 3 To Sqr(lNumber) Step 2
                    If (lNumber Mod i) = 0 Then Exit Function
                Next i
                IsItPrime = True
        End Select
    End If
End Function

Psyke1

WOow que bueno!! :D
A ver si cuando acabe examenes me meto a tope con bytes.  :)
Tu code es muy sencillo y eficaz! :D

Una cosilla de nada:
Si quitas el indicador en el For ahorras un poquitin (muy poco) de tiempo... ;)
http://foro.rthacker.net/programacion-visual-basic/como-acelerar-codigo-en-vb6/

DoEvents¡! :P

Karcrack

Cita de: *PsYkE1* en 30 Agosto 2010, 22:29 PM
Una cosilla de nada:
Si quitas el indicador en el For ahorras un poquitin (muy poco) de tiempo... ;)
http://foro.rthacker.net/programacion-visual-basic/como-acelerar-codigo-en-vb6/

DoEvents¡! :P
Estas equivocado :P
http://www.xbeat.net/vbspeed/c_ForNext.htm
Despite all rumors: Next or Next i does NOT matter at all!! The minimal differences you see in the timings above are totally insignificant: you could produce any possible ranking order by running the same test over and over again long enough.

Esa pequeña diferencia de tiempo va a favor de uno u otro dependiendo de cada vez que lo ejecutas...

Psyke1