Cita de: cbug en 9 Julio 2010, 14:02 PMEn serio?
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.
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úCita de: cbug en 9 Julio 2010, 14:02 PMEn serio?
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.
Cita de: *PsYkE1* en 8 Julio 2010, 14:48 PMNo lo habia pensado , pero bueno, no interfiere en la velocidad, solo se llama una vez
Una pregunta Karcrack, porque pones que vaya a la etiqueta Exit_ y no pones Exit Function??
Salu2!
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
Cita de: 777Rubenix777 en 7 Julio 2010, 13:33 PMAdministrador Remoto = RAT = Remote Administration Tool = Herramienta de Administracion Remota = HARCita 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
Conexion Directa: Cliente ----> Servidor (Juegos, Administradores Remotos... etc)
Conexion Inversa: Servidor ----> Cliente (Troyanos/RAT's)
http://foro.elhacker.net/analisis_y_diseno_de_malware/papper_conexion_inversa_con_vb_tipo_bifrost_multiconexion-t129870.0.html
Cita de: cbug en 7 Julio 2010, 12:58 PMHe pensado en usar la criba de Eratostenes pero es mas para generar una lista de primos, solo quiero comprobar si un número lo esCitarSe 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!
Cita de: Dreamaker en 7 Julio 2010, 13:00 PMNo es necesario recorrer cada numero, con llegar a la raiz es suficiente No dire nada sobre el 1
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)
Cita de: cbug en 7 Julio 2010, 12:45 PMCierto, habia olvidado que el 2 tambien es primo (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?
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
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
## 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
http://es.wikipedia.org/wiki/Criba_de_Erat%C3%B3stenes
http://es.wikipedia.org/wiki/Conjetura_de_Goldbach