Título: ejercicio de numeros primos Publicado por: el gusanillo en 6 Diciembre 2017, 09:18 am Buenos días, necesito un poco de ayuda:
El ejercicioes el siguiente: Escribid un programa que dado un array de 10 enteros (introducidos a mano en el código), cuente cuantos números primos tiene. #include <iostream> using namespace std; int Primo (int n) { int x,i; for (int i=2; i<10; i++) //Recorro el arreglo { bool primo=true; int max=x/2; for (int x=2;x<=max;x++) { if(x%i==0) // Si es divisor, no es primo { primo=false; break; } } if (primo) // Si es primo, lo saco por pantalla { cout <<x<< " "; } } cin.get();cin.get(); return 0; } Esto es lo que tengo. Gracias Título: Re: ejercicio de numeros primos Publicado por: moncker94 en 6 Diciembre 2017, 12:17 pm Muy buenas gusanillo,
0. Tabulo tu código para hacerlo más legible: { int x,i; for (int i=2; i<10; i++) //Recorro el arreglo -> Consideras i, por lo tanto, un idexador del arreglo { bool primo=true; int max=x/2; for (int x=2;x<=max;x++) // Muy correcto, solo es necesario ver hasta la mitad de él { if(x%i==0) // Si es divisor, no es primo -> Aquí es dónde chirría más -> [Veáse anotación 1] { primo=false; // Estructura lógica compleja -> [Veáse anotación 2] break; } } if (primo) // Si es primo, lo saco por pantalla { cout <<x<< " "; } } cin.get();cin.get(); return 0; } 1. Anotaciones sobre tu código [Anotación 1]. El concepto de primo no es "no ser divisor", es "no ser divisible" 7 no es divisor de 13, pero sí de 14. Aun así es primo porque no existe un {k € R} tal que lo divida con resto cero quitando él mismo y el uno. [Anotación 2]. Analiza correctamente si es mejor partir de que es falso o es verdadero. Fíjate que queda más sencillo, sí, es pseudocódigo: for( valores_anteriores_a_la_mitad_del_número_inclusive ){ // Partimos de la idea de que no lo es if( es divisible por uno de estos valores){ esPrimo = true; break; } } 2. Conclusión Analiza de nuevo tu código con las anotaciones que te he propuesto, si ves que aun tienes problema. ¡Aquí estamos! Saludos, moncker94 Título: Re: ejercicio de numeros primos Publicado por: MAFUS en 8 Diciembre 2017, 06:59 am Si con i recorres el array de números y con x buscas los divisores entonces debería ser i%x, no al revés.
Título: Re: ejercicio de numeros primos Publicado por: el gusanillo en 10 Diciembre 2017, 17:44 pm Lo primero es agradecer toda la ayuda recibida. Por otra parte he echo alguna modificación para que me funcione en Dev c++
Cambié # <include iostream> a <stdio.h> Cambié using namespace por # include <stdlib.h> Pero: bool primo= true NO ME LO ACEPTA, Y CREO QUE ESTÁ BIEN ¿Qué tengo que hacer para que " bool " sea aceptado por el programa? Gracias Título: Re: ejercicio de numeros primos Publicado por: MAFUS en 10 Diciembre 2017, 20:33 pm Estas cambiando de C++ a C y este último hasta su estándar C99 no acepta bool,, además de que debes incluir stdbool. Por tanto: debes indicar al compilador que use C99 o superior e incluyendo la librería mencionada. O cambias bool por int e indicas falsedad con el número 0 y trueno con cualquier número diferente a 0.
Título: Re: ejercicio de numeros primos Publicado por: CalgaryCorpus en 12 Diciembre 2017, 03:17 am Si tienes un arreglo, i representa el índice, no el dato guardado en el arreglo.
Si quieres detener el ciclo interior, no tienes que llegar a la mitad del número, sino a la raíz cuadrada del mismo |