Listing 8 primes.c — function to set up table of prime numbers

/* primes.c */
/* Copyright 1992 by P.J. LaBrocca */

#include <stdlib.h>
#include "mixed.h"

#define NUM 16000     /* highest number to check for being prime */

Integer Primes[ 2000 ];

void init_primes( void )
{
    char *mark = malloc(NUM * sizeof(char) );
    Integer *pr = Primes; /* point to global array */
    Integer j, k;

    for(j = 0; j < NUM; ++j)
       mark[j] = 1;      /* mark everything prime */
    for(j = 4; j < NUM; j += 2)
       mark[j] = 0;     /* scratch off all the even numbers ... */
    *pr++ = 2;           /* ... except for 2; put it in primes array */
    for(j = 3; j < NUM; j += 2)  /* check each odd number: */
       if(mark[j]) {            /* if it's marked... */
           *pr++ = j;          /* ..record it in array.. */
           for(k = j + j; k < NUM; k += j)
              mark[k] = 0;     /* ..and scratch off all its multiples */
       }
    free( mark );
}
#undef NUM
/* End of File */