//==============================================================================
//
// prime.c
//
// program for calculation of first NN prime numbers
//
// similar program should be in every C programming textbook
//
// developer: Henry Guennadi Levkin
//
//==============================================================================

#include <stdio.h>
#include <math.h>

#define NN 100000 // number of calculated primes

long gPrime[NN];  // array with primes

//------------------------------------------------------------------------------
int main(int nArgs, char** ppArg)
{
  long nPrimes;
  long i, k, kk;
  
  FILE* pFile;

  system("date");
  
  nPrimes   = 1;
  gPrime[0] = 2;

  k=3;  // testing number

  while(nPrimes < NN)
  {
    kk = sqrt( (double) k);
    for(i=0; i<nPrimes; i++) // test division for all previous primes
    {
      if( !(k % gPrime[i]) )  break; // not a prime
      if( gPrime[i] > kk ) 
      {
        gPrime[nPrimes] = k;
        nPrimes++;
        break;
      }
    }
	
    k++; k++;
  };

  system("date");
  
  // save in "primes.txt" file
  pFile=fopen("primes.txt","w");
  for(i=0; i<nPrimes; i++) 
  {
    if( (i%10)==0 ) fprintf(pFile, "\n");
    fprintf(pFile, "%10d", gPrime[i]);
  }
  fclose(pFile);

  // experiments ...

  return 0;
}
