elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ejercicio de numeros primos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ejercicio de numeros primos  (Leído 3,718 veces)
el gusanillo

Desconectado Desconectado

Mensajes: 20


Ver Perfil
ejercicio de numeros primos
« 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



En línea

moncker94

Desconectado Desconectado

Mensajes: 5



Ver Perfil
Re: ejercicio de numeros primos
« Respuesta #1 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


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: ejercicio de numeros primos
« Respuesta #2 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.
En línea

el gusanillo

Desconectado Desconectado

Mensajes: 20


Ver Perfil
Re: ejercicio de numeros primos
« Respuesta #3 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
En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: ejercicio de numeros primos
« Respuesta #4 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.
En línea

CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: ejercicio de numeros primos
« Respuesta #5 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
En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Python 2.6] Funcion generadora de Numeros primos (5.761.455 primos en 19 seg)
Scripting
katas 2 9,543 Último mensaje 10 Marzo 2010, 01:50 am
por Novlucker
NUMEROS PRIMOS
Programación C/C++
alviera 4 5,704 Último mensaje 7 Diciembre 2010, 06:39 am
por N0body
NUMEROS PRIMOS
Programación C/C++
ALONSOQ 5 3,269 Último mensaje 16 Junio 2012, 18:13 pm
por ALONSOQ
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines