2

Me piden crear un array que contenga los 20 primeros números. Para inicializar el array, que he intentado un bucle anidado. Para ello, he intentando lo siguiente:

#include <stdio.h>
int main()
{
   int primos[20];
   int i;
   int numero;
   for(i = 0; i <= numero; i++)
   {
     for(j = 2; j < numero; j++)
     {
        i % j =! 0;
     }
   }
}

Con esto, creo que soy capaz de definir un número primo. Con objeto de definirlo, me he basado en la principal propiedad de los primos, esto es, que un número primo p solo es divisible por 1 y por p. Entonces, si en el bucle, siempre se cumple que i % j != 0, sabemos que i es primo. Pero, no sé cómo hacer que recorra todos los números enteros hasta que el array contenga 20 números.

eferion
  • 49,291
  • 5
  • 30
  • 72
Carlos
  • 327
  • 1
  • 2
  • 14

1 Answers1

4

Pero, no sé cómo hacer que recorra todos los números enteros hasta que el array contenga 20 números.

Usa un contador:

int contador = 0;

while (contador != 20)
{
    // … hacer cosas …
    if ( es número primo )
        ++contador;
}

Por otro lado, tu código tiene fallos básicos:

  1. ¿Por qué miras los números de uno en uno si sabes que los múltiplos de 2 nunca serán primos? Avanza de dos en dos.
  2. No declaras j.
  3. La expresión j =! 0 significa "j es no cero" en lugar de "j es diferente de cero".
  4. Una vez encuentras un divisor, no tienes que mirar más números, deberías interrumpir el bucle. Puedes saltar a la siguiente iteración del bucle con continue.
  5. La función main debería devolver un valor y sus parámetros deberían ser void.
  6. Favorece el pre-incremento antes que el post-incremento.
  7. Las variables que usas podrían tener un ámbito más pequeño.
PaperBirdMaster
  • 44,474
  • 6
  • 44
  • 82
  • 1
    Entiendo los fallos que me comenta en los siete puntos, pero es la primera que vez que uso C y hay que cosas que dice que no sabría cómo hacer. Por ejemplo, el punto 4 no sabría implementarlo. Realmente, el punto 2 es un fallo muy tonto. – Carlos Dec 04 '19 at 14:30
  • Si tiene una duda adicional, puede redactar una nueva pregunta. – PaperBirdMaster Dec 04 '19 at 14:35