Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

programa que muestre la suma de los primeros "n" numeros primos

Estas en el tema de programa que muestre la suma de los primeros "n" numeros primos en el foro de Visual Basic clásico en Foros del Web. necesito ayuda para crear un programa que muestre la suma de los primeros "n" numeros primos. espero que puedan ayudarme. gracias...
  #1 (permalink)  
Antiguo 14/07/2008, 10:24
 
Fecha de Ingreso: julio-2008
Mensajes: 4
Antigüedad: 15 años, 9 meses
Puntos: 0
programa que muestre la suma de los primeros "n" numeros primos

necesito ayuda para crear un programa que muestre la suma de los primeros "n" numeros primos. espero que puedan ayudarme. gracias
  #2 (permalink)  
Antiguo 14/07/2008, 10:34
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: programa que muestre la suma de los primeros "n" numeros primos

Lo que puedes hacer es tener una lista con los números primos (por ejemplo de uno a 100), y luego simplemente recorre esa lista para hacer la suma.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 14/07/2008, 10:39
 
Fecha de Ingreso: julio-2008
Mensajes: 4
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: programa que muestre la suma de los primeros "n" numeros primos

en todo caso me podrian facilitar el codigo?

Última edición por blackr; 14/07/2008 a las 18:29
  #4 (permalink)  
Antiguo 14/07/2008, 11:07
Avatar de Jhonnyf  
Fecha de Ingreso: septiembre-2007
Ubicación: Dentro de mi
Mensajes: 87
Antigüedad: 16 años, 7 meses
Puntos: 5
Respuesta: programa que muestre la suma de los primeros "n" numeros primos

Pega 2 TextoBox a uno ponle txtN_numero y al otro txtSumaPrimos

un boton cmdCalcular

Código:
Private Sub cmdCalcular_Click()
Dim Suma As Long
If Val(txtN_numero.Text) > 0 Then
Suma = 1
End If
    
    For i = 2 To Val(txtN_numero.Text)
        For j = 2 To i
        
        If (i Mod j = 0) Then
            If j = i Then
                Suma = Suma + i
            End If
            Exit For
        End If
        Next
    Next
    txtSumaPrimos.Text = Suma
End Sub
Saludos!

PD: Si quieres que lo explique ya es otro precio XD
  #5 (permalink)  
Antiguo 14/07/2008, 11:35
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: programa que muestre la suma de los primeros "n" numeros primos

Interesante la solución Jhonnyf. No me hubiera imaginado hacerlo así. No obstante, creo que para que sea de verdadera utilidad para el usuario sería mejor explicarle (Yo lo he entendido, pero te dejo a ti para que lo expliques).

Saludos
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #6 (permalink)  
Antiguo 14/07/2008, 16:01
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 10 meses
Puntos: 7
Respuesta: programa que muestre la suma de los primeros "n" numeros primos

Hola!

La forma de buscar los primos sí que me ha parecido muy elegante, pero le he visto un fallo...

Por ejemplo, para txtN_numero.Text = 5 y txtN_numero = 6, devuelve "11", cuando debería devolver "18" (1 + 2 + 3 + 5 + 7) y "29", respectivamente (+11). Lo que está haciendo es sumar los primos que encuentra entre los n primeros números, no los n primeros primos.

Si lo he entendido bien, sería algo así (me he basado en tu mismo código):

Código:
Public Function SumaDePrimos(ByVal TotalPrimos As Long) As Long
Dim Suma As Long
Dim PrimosEncontrados As Long
Dim i As Long
Dim j As Long

    If TotalPrimos > 0 Then Suma = 1
    
    i = 1
    PrimosEncontrados = 1
    Do While PrimosEncontrados < TotalPrimos
        i = i + 1
        For j = 2 To i
            If (i Mod j = 0) Then
                If j = i Then
                    Suma = Suma + i
                    PrimosEncontrados = PrimosEncontrados + 1
                End If
                Exit For
            End If
        Next j
    Loop
    
    SumaDePrimos = Suma
End Function
  #7 (permalink)  
Antiguo 14/07/2008, 16:22
Avatar de Jhonnyf  
Fecha de Ingreso: septiembre-2007
Ubicación: Dentro de mi
Mensajes: 87
Antigüedad: 16 años, 7 meses
Puntos: 5
Respuesta: programa que muestre la suma de los primeros "n" numeros primos

Cita:
Iniciado por Txoco Ver Mensaje
Hola!

La forma de buscar los primos sí que me ha parecido muy elegante, pero le he visto un fallo...

Por ejemplo, para txtN_numero.Text = 5 y txtN_numero = 6, devuelve "11", cuando debería devolver "18" (1 + 2 + 3 + 5 + 7) y "29", respectivamente (+11). Lo que está haciendo es sumar los primos que encuentra entre los n primeros números, no los n primeros primos.

Si lo he entendido bien, sería algo así (me he basado en tu mismo código):

Código:
Public Function SumaDePrimos(ByVal TotalPrimos As Long) As Long
Dim Suma As Long
Dim PrimosEncontrados As Long
Dim i As Long
Dim j As Long

    If TotalPrimos > 0 Then Suma = 1
    
    i = 1
    PrimosEncontrados = 1
    Do While PrimosEncontrados < TotalPrimos
        i = i + 1
        For j = 2 To i
            If (i Mod j = 0) Then
                If j = i Then
                    Suma = Suma + i
                    PrimosEncontrados = PrimosEncontrados + 1
                End If
                Exit For
            End If
        Next j
    Loop
    
    SumaDePrimos = Suma
End Function
??????????????????????
veamos, pidieron la SUMA de los N primeros Primos

si pone 5, los primeros numeros primos serán
1+2+3+5 = 11
Si pone 6, los primeros Numeros primos seguiran siendo
1+2+3+5 = 11
Si pone 7, los Primeros numeros Primos serán:
1+2+3+5+7 = 18

No sé porque dices que esta mal....

y sorry por no documentarlo que lo hize al toque... aqui le dejo bien masticadito como es la nuez :D


Código:
Private Sub cmdCalcular_Click()
'Como un Numero Primo es aquel que es divisible
'solo por si mismo o por 1, entonces ya de por si,
'el 1 entra si o si si ha puesto un valor mayor que 0

Dim Suma As Long
'Sumando el primer Primo, osea el 1
If Val(txtN_numero.Text) > 0 Then 'Si puso un numero mayor que 0 entonces ya le sumo el 1
Suma = 1
End If

    
    For i = 2 To Val(txtN_numero.Text) 'vamos a recorrer desde el 2 hasta el numero que puso, no desde 1 porque ya lo sumanos al inicio, y todos los numros son divisibles por 1
        For j = 2 To i 'vamos a recorres desde el 2 hasta el numero en que se encuentra evaluando actualmente, osea, va a hacer el numero entre 2, luego entre 3, luego entre 4, etc
        
        If (i Mod j = 0) Then ' si el residuo de la division, el numero Actual / el que esta recomiendo = 0 entonces es porque el numero es divisible por algo
            If j = i Then 'Si el numero que esta recorriendo es igual al ultimo numero actual, entonces es porque es primo!!! (11 mod 11 = 0 ; adicionalmente es el Ultimo que evaluamos osea 11=11; por tanto es primo)
                Suma = Suma + i 'Sumamos a los primos encontrado el numero actual
            End If
            Exit For 'Si el numero es Divisible por Algo, y no es el ultimo que evaluamos (10 mod 5 = 0 ; adicionalmente 10 es diferente 5, por tanto no es primo) asi que salimos el Primer For para que evalue el siguiente Numero, de nada sirve recorrer hasta el final porque ya sabemos que no es primo
        End If
        Next
    Next
    txtSumaPrimos.Text = Suma 'Cuando acaba lo muestra
End Sub
  #8 (permalink)  
Antiguo 14/07/2008, 16:35
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 10 meses
Puntos: 7
Respuesta: programa que muestre la suma de los primeros "n" numeros primos

Cita:
Iniciado por Jhonnyf Ver Mensaje
??????????????????????
veamos, pidieron la SUMA de los N primeros Primos

si pone 5, los primeros numeros primos serán
1+2+3+5 = 11
Si pone 6, los primeros Numeros primos seguiran siendo
1+2+3+5 = 11
Si pone 7, los Primeros numeros Primos serán:
1+2+3+5+7 = 18

No sé porque dices que esta mal....
Claro, los 5 primeros números primos son 1, 2, 3, 5 y 7; los 6 primeros números primos son 1, 2, 3, 5, 7 y 11; y los 7 primeros son 1, 2, 3, 5, 7, 11 y 13. Tal como lo explicas son los números primos entre 1 y n. No está mal, depende de lo que blackr necesite... y yo he entendido esto. ¿nop?

Última edición por Txoco; 14/07/2008 a las 16:44
  #9 (permalink)  
Antiguo 14/07/2008, 16:44
Avatar de Jhonnyf  
Fecha de Ingreso: septiembre-2007
Ubicación: Dentro de mi
Mensajes: 87
Antigüedad: 16 años, 7 meses
Puntos: 5
Respuesta: programa que muestre la suma de los primeros "n" numeros primos

Cita:
Iniciado por Txoco Ver Mensaje
Claro, los 5 primeros números primos son 1, 2, 3, 5 y 7; los 6 primeros números primos son 1, 2, 3, 5, 7 y 11; y los 8 primeros son 1, 2, 3, 5, 7, 11 y 13. Tal como lo explicas son los números primos entre 1 y n. No está mal, depende de lo que blackr necesite... y yo he entendido esto. ¿nop?
Ok, entonces es problema Interpretación, si lo que quiere es los n primeros numeros en un rango de 1 al numero que ponga, entonces mi codigo le servirá

Si lo que quiere es la suma de lo N primero Numeros Primos, tu codigo esta bien U_U
y como bien dices,
los 3 primeros numeros primos son: 1,2,3 = 6
los 4 primeros Numeros primos son: 1,2,3,5 = 11
los 5 primeros Numeros primos son: 1,2,3,5,7 = 18
los 6 primeros Numeros primos son: 1,2,3,5,7,11 = 29
  #10 (permalink)  
Antiguo 14/07/2008, 18:22
 
Fecha de Ingreso: julio-2008
Mensajes: 4
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: programa que muestre la suma de los primeros "n" numeros primos

Muchas gracias muchachos! Lo han logrado.

Gracias a todos por su tiempo y dedicación

solo una pregunta más:

¿que objetos debo de crear y con qué nombres tomando como referencia el codigo de Txoco?

...como ya dije recien estoy aprendiendo...

Última edición por blackr; 14/07/2008 a las 19:01
  #11 (permalink)  
Antiguo 14/07/2008, 18:56
Avatar de ba-ka  
Fecha de Ingreso: julio-2008
Mensajes: 27
Antigüedad: 15 años, 9 meses
Puntos: 1
Exclamación Respuesta: programa que muestre la suma de los primeros "n" numeros primos

Quien no puede hacer esos programas son tan faciles...Pero es en Visual 6.0 :r isa:Alguien me avisa donde hay pasto
  #12 (permalink)  
Antiguo 15/07/2008, 02:23
Avatar de Txoco  
Fecha de Ingreso: junio-2008
Ubicación: Perdido en tierras Quijotescas
Mensajes: 189
Antigüedad: 15 años, 10 meses
Puntos: 7
Respuesta: programa que muestre la suma de los primeros "n" numeros primos

El código que te he puesto es una función; si lo pegas en un módulo, podrás utilizarlo desde cualquier formulario de tu proyecto (observa que comienza con "Public").

Si lo pegas dentro de un formulario, es recomendable que cambies "Public" por "Private", para evitar que se pueda llamar a la función desde fuera del propio formulario (según lo que estés haciendo puede hacer que tu aplicación acabe teniendo fallos de seguridad).

Cuando lo tengas a tu gusto, agrega los controles que te decía JhonnyF, y en el código del formulario, pega el siguiente código para el botón:

Código:
Private Sub cmdCalcular_Click()
    txtSumaPrimos = SumaDePrimos(Val(txtN_numero))
End Sub
Puedes indicar la propiedad .Text o no, (como en txt_SumaPrimos.Text), ya que es cuestión de gustos. Para los controles TextBox es la propiedad por defecto y por eso no hace falta indicarla, de igual forma que para los controles Label no hace falta indicar "<Label>.Caption = ...", y basta con "<Label> = ...". Todos los controles tienen una única propiedad por defecto que no hace falta indicar.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 20:15.