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 - Karcrack

#911
Cita de: cbug en  9 Julio 2010, 14:02 PM
En la sección Ejercicios de programación existen muchos ejercicios, que se pueden resolver en cualquier lenguaje, ya que vb no es el único.
:laugh: :laugh: :laugh: En serio? :o :o
#912
Cierro el tema, cualquier duda le enviais un MP al creador ;)
#913
Cita de: *PsYkE1* en  8 Julio 2010, 14:48 PM
Una pregunta Karcrack, porque pones que vaya a la etiqueta Exit_ y no pones Exit Function??

Salu2!
No lo habia pensado :laugh: , pero bueno, no interfiere en la velocidad, solo se llama una vez :P
#914
Muy bueno Cobein :) No habia pensando que podrian saltarse los pares :laugh: ;)

He optimizado el primero que puse:
Código (vb) [Seleccionar]
Public Function IsItPrime(ByVal lNumber As Long) As Boolean
    Dim i       As Long

    If (lNumber > 2) And (lNumber And 1) Or (lNumber = 2) Then
        For i = 3 To Sqr(lNumber) Step 2
            If (lNumber Mod i) = 0 Then GoTo Exit_
        Next i
        IsItPrime = True
    End If
Exit_:
End Function


Saludos :D
#915
Cita de: 777Rubenix777 en  7 Julio 2010, 13:33 PM
Cita de: Søra en  7 Julio 2010, 01:55 AM
eso que as dicho que un colectivo de servidores se conectan a un cliente no es al reves  :huh: :huh: :huh:

Conexion Directa: Cliente ----> Servidor (Juegos, Administradores Remotos... etc)
Conexion Inversa: Servidor ----> Cliente  (Troyanos/RAT's)
Administrador Remoto = RAT = Remote Administration Tool = Herramienta de Administracion Remota = HAR



Lo que tienes que hacer es lo que te ha dicho ctlon, el cliente ha de aceptar todas las conexiones (en conexion inversa el cliente es el que maneja las conexiones) fijate en este codigo:
http://foro.elhacker.net/analisis_y_diseno_de_malware/papper_conexion_inversa_con_vb_tipo_bifrost_multiconexion-t129870.0.html
Esta un poco viejo, pero para la idea te servirá ;)
#916
@Psyke: Tu función es mucho mas lenta, ademas, no tiene en cuenta que el 2 es primo (como hacia la mia :rolleyes: :xD)
No es necesario que recorras todos los números, con llegar a la raiz es suficiente ;)
#917
Cita de: cbug en  7 Julio 2010, 12:58 PM
CitarSe puede utilizar un Integer, aunque tambien acepta Negativos... Pero solo enteros

:-\ Claro, porque de acuerdo a la definición, los números primos son aquellos números naturales que...

Pero igual, tu código creo que es el más eficiente en cuanto a complejidad, no sé cómo se tratará el goto en vb realmente... sin embargo, creo que se parece mucho al de la criba de eratóstenes...

Saludos!
He pensado en usar la criba de Eratostenes pero es mas para generar una lista de primos, solo quiero comprobar si un número lo es :D


Cita de: Dreamaker en  7 Julio 2010, 13:00 PM
Me quedó una duda, en el primer for lo haces hasta la raíz cuadrada del número para que sea más eficiente cierto? (Osea, tarde menos tiempo)

Está bien aunque es sencillo, y no comprueba si el 1 es primo o no (no digas nada) :xD
No es necesario recorrer cada numero, con llegar a la raiz es suficiente :) No dire nada sobre el 1 :rolleyes: :xD
#918
Cita de: cbug en  7 Julio 2010, 12:45 PM
If (lNumber > 2) And (lNumber Mod 2) Then

Al 2 lo evalúas?

Ahora en visual basic se puede modificar el long para que únicamente tome los enteros positivos?
Cierto, habia olvidado que el 2 tambien es primo :laugh: ;) (Ahora lo corrijo Correjido ;))

Se puede utilizar un Integer, aunque tambien acepta Negativos... Pero solo enteros :-\
#919
Bueno, me hacia falta hacer una funcion de este tipo para un trabajito que estoy haciendo :silbar:... y he pensado que tal vez os seria util...
Código (vb) [Seleccionar]
Public Function IsItPrime(ByVal lNumber As Long) As Boolean
   Dim i       As Long
   
   If (lNumber > 2) And (lNumber Mod 2) Or (lNumber = 2) Then
       For i = 2 To (lNumber ^ 0.5)
           If (lNumber Mod i) = 0 Then
               GoTo Exit_
           End If
       Next i
       IsItPrime = True
   End If
Exit_:
End Function


Podriamos hacer un jueguecito... a ver quien lo hace mas rapido/corto :D Os apuntais?

MOD: Yo utilizo este codigo para comprobar lo optimizado que esta:
Option Explicit

Private n       As Long

Private Sub Form_Load()
   Dim x       As Long
   
   Timer1.Interval = 10
   Timer1.Enabled = True
   For x = 0 To 10 ^ 6
       Call IsItPrime(x)
       DoEvents
   Next x
   Timer1.Enabled = False
   MsgBox n * 10 & " ms"
End Sub

Public Function IsItPrime(ByVal lNumber As Long) As Boolean
   Dim i       As Long
   
   If (lNumber > 2) And (lNumber Mod 2) Or (lNumber = 2) Then
       For i = 2 To (lNumber ^ 0.5)
           If (lNumber Mod i) = 0 Then
               GoTo Exit_
           End If
       Next i
       IsItPrime = True
   End If
Exit_:
End Function

Private Sub Timer1_Timer()
   n = n + 1
End Sub
#920
Scripting / [Python] Conjetura del Goldbach
7 Julio 2010, 10:37 AM
Hice esta aplicacion para subir nota en Informatica y pense que tal vez a alguien le sea de utilidad :xD

Código (python) [Seleccionar]
## coding: utf-8

## Criba de Eratóstenes
def GetPrimes(n):
# Obtenemos el lado de la criba
nroot = int(n**0.5)
# Marcamos todos los numeros como primos
sieve = [True]*(n+1)
# El 0 y el 1 no son primos
sieve[0] = False
sieve[1] = False

# Recorremos todos los números de 2 hasta la raíz
for i in xrange(2, nroot+1):
# Si esta marcado como primo...
if sieve[i]:
# Obtenemos la cantidad de multiples en el rango
m = n/i - i
# Marcamos todos sus multiplos como NO primos
sieve[i*i: n+1:i] = [False] * (m+1)
# Devolvemos solo los primos del rango
return [i for i in xrange(n+1) if sieve[i]]

while True:
try:
n = int(raw_input("Dame un número:"))
if (n % 2 == 0) and (n > 2):
break
int("x")
except:
print "Se necesita un número entero par mayor que 2."

print "*"*50
print "Se aplicará la conjetura fuerte de Goldbach."
print "Esta establece que cualquier número par mayor que 2 puede \nexpresarse como suma de DOS números primos"
print "*"*50

p = GetPrimes(n)
l = 0

for w in p:
for v in p:
if w + v == n:
if w == l:
exit = True
break
l = v
print "%d+%d=%d" % (w,v,n)
if exit == True:
break


Mas info:
http://es.wikipedia.org/wiki/Criba_de_Erat%C3%B3stenes
http://es.wikipedia.org/wiki/Conjetura_de_Goldbach


Saludos :D