Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Imprimir numeros primos - Problema

Estas en el tema de Imprimir numeros primos - Problema en el foro de C/C++ en Foros del Web. Hola, estaba tratando de hacer un programa para imprimir los primeros 100001 numeros primos pero se queda trabado y no se en que falla, el ...
  #1 (permalink)  
Antiguo 26/02/2013, 20:53
 
Fecha de Ingreso: noviembre-2011
Mensajes: 50
Antigüedad: 12 años, 6 meses
Puntos: 3
Pregunta Imprimir numeros primos - Problema

Hola, estaba tratando de hacer un programa para imprimir los primeros 100001 numeros primos pero se queda trabado y no se en que falla, el codigo es:

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main() {
  4.     int contador = 0;
  5.     int i = 1, primo = 1;
  6.     int j = 1;
  7.    
  8.     while (primo < 10002) {
  9.         while (contador < 3) {
  10.             if (i % j == 0)
  11.                 contador++;
  12.             else
  13.                 contador = 3;
  14.             if (contador == 2 && j == i) {
  15.                 printf("%d es el primo numero %d\n", i, primo);
  16.                 primo++;
  17.                 contador = 3;
  18.             }
  19.             j++;
  20.         }
  21.         i++;
  22.         j = 1;
  23.         contador = 0;
  24.     }
  25.    
  26.     return 0;
  27. }
  #2 (permalink)  
Antiguo 27/02/2013, 03:29
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 11 años, 10 meses
Puntos: 28
Respuesta: Imprimir numeros primos - Problema

No acabo de entender tu algoritmo...

Yo lo haría tal que así:

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. #define MAX 100
  4.  
  5. int main()
  6. {
  7.     unsigned int i = 2;
  8.     unsigned int j = 2;
  9.     unsigned int Contador = 0;
  10.  
  11.     short primo = 1; // 1 significa true, 0 significa falso
  12.  
  13.     while (Contador < MAX)
  14.     {
  15.         for (j = 2; j <i;j++)
  16.             if (i%j == 0)
  17.             {
  18.                 j = i; // Forzamos la salida del bucle for
  19.                 primo = 0; // No es primo
  20.             }
  21.  
  22.         if (primo == 1)
  23.         {
  24.             Contador++;
  25.             printf("El numero %d es el primo %d \n",i,Contador);
  26.         }
  27.         i++;
  28.         primo = 1;
  29.     }
  30.  
  31.     return 0;
  32. }

Etiquetas: numeros, primos, programa
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




La zona horaria es GMT -6. Ahora son las 16:33.