/* TestGenPrimes.c */

#include <stdio.h>

#define MaxArrayLength 260563    /* MaxPrime = Primes[260562] = 3 657 613 */

void GenPrimes(int*);

void main(void)
{
 int  Primes[MaxArrayLength];

 GenPrimes(Primes);

 /* for (K=1; K<MaxIndex; K++) printf("%d ",Primes[K]); puts(""); */
 printf("Last index = %d   Last prime = %d\n",
                                   MaxArrayLength-1,Primes[MaxArrayLength-1]);

 getchar();
}

/************************************************************************/

void GenPrimes(int *A)  /* insert sequentially primes N into array A
                MaxArrayLength of A = 260563     A[260562] = 3 657 613 */
{
 int I,K,N;        /* I2 = I*I */

 A[1]=2; A[2]=3; A[3]=5;   A[0] = 260562;  
 K=3; N=5;

 while (K<MaxArrayLength)
  {
   for (I=2; A[I]*A[I]<=N; I++) if (!(N%A[I])) goto NextN;
   K++; A[K]=N;
NextN: N+=2;
 }
}
