ErrorDeSintaxis

Pequeños fragmentos de código fuente en distintos lenguajes de programación, agrupados por categorías.

Puedes buscar entre los fuentes existentes, o aportar los tuyos.

C: Números primos

Mostrar los 1.000 primeros números primos

Lenguaje: C (compilador: GCC 3)

Categoría: Básico

/* Fuente procedente de ErrorDeSintaxis.es */
/* Mostrar los 1.000 primeros números primos */
/* Compilador: GCC 3 */
/* Nivel: Básico */
/* Disponible desde 31/08/2011 */
/* Aportado por Nacho */
/* Autor original: Paul Griffiths */
/* Web original: http://www.paulgriffiths.net/program/c/srcs/primesrc.html */

/*
  PRIME.C
  =======
  (c) Copyright Paul Griffiths 2000
  Email: mail@paulgriffiths.net
 
  Programa que busca los 1000 primeros numeros primos 
 
  Versión traducida al español para ErrorDeSintaxis.es
*/
 
 
#include <stdio.h>
#include <stdlib.h>
 
 
int prime(int number, int * primos);
 
int main(void) {
    int primos[998] = { 3, 0 };
    int n = 5, i;
    int cantidad = 0, encontrado;
 
    printf("%8d%8d%8d", 1, 2, 3);      /*  Print first 3 primos     */
 
 
    /*  Find the next 997  */
 
    while ( cantidad < 997 ) {
        i = 0;
        encontrado = 1;
 
 
        /*  Ver si es divisible entre otro primo ya encontrado  */
 
        while ( primos[i] ) {
            if ( (n % primos[i++]) == 0 ) {   /*  Si lo es...              */
                encontrado = 0;                    /*  ...no es primo...  */
                break;                        /*  ...y paramos de buscar         */
            }
        }
 
        if ( encontrado ) {
            printf("%8d", n);                /*  If it's prime, print it...  */
            primos[i] =  n;                  /*  ...and add it to the list   */
            ++cantidad;
 
 
            /*  Nueva linea cada 8 primos  */
 
            if ( ((cantidad + 3) % 8) == 0 )
                putchar('\n');
        }
 
        n += 2;     /*  Saltamos los pares, que no son primos  */
    }
 
    putchar('
');
 
    return EXIT_SUCCESS;
}
 

 
Resultado:

       1       2       3       5       7      11      13      17
      19      23      29      31      37      41      43      47
      53      59      61      67      71      73      79      83
      89      97     101     103     107     109     113     127
     131     137     139     149     151     157     163     167
     173     179     181     191     193     197     199     211
     223     227     229     233     239     241     251     257
     263     269     271     277     281     283     293     307
     311     313     317     331     337     347     349     353
     359     367     373     379     383     389     397     401
(...)