| |||
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 |
| ||||
![]() 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. |
| ||||
![]() 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. |
| ||||
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 |
| ||||
Respuesta: programa que muestre la suma de los primeros "n" numeros primos Cita: ??????????????????????
Iniciado por Txoco ![]() 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 |
| ||||
Respuesta: programa que muestre la suma de los primeros "n" numeros primos Cita: 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?
Iniciado por Jhonnyf ![]() ?????????????????????? 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.... ![]() Última edición por Txoco; 14/07/2008 a las 16:44 |
| ||||
Respuesta: programa que muestre la suma de los primeros "n" numeros primos Cita: 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á
Iniciado por Txoco ![]() 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? ![]() 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 |
| |||
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 |
| ||||
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:
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. Private Sub cmdCalcular_Click() txtSumaPrimos = SumaDePrimos(Val(txtN_numero)) End Sub |