#define _PROFILER_ 
extern long *_P_COUNT;
long _P_ONEXIT();
void _P_STOPWATCH(unsigned long,unsigned long,
      unsigned long *,unsigned long *,unsigned long *);
long _P_ACCESS(long);
#define _P_DUMP 1
#define _P_CLEAR 0 
/*****************************************************************************
 ***
 *** The Sieve of Eratosthenes
 ***
 ***/

#include "time.h"
#include "stdio.h"
#define size 8190
unsigned char flag[size+1];
void main()
{
  register int i,k,p,primes;
  int iter;
  long t1,t2;
  
static unsigned long _P_FCN_SECS=0,_P_FCN_MICROS=0,
_P_FCN_DEPTH=0;
_P_PROFILE_SETUP();
_P_STOPWATCH(1,0,&_P_FCN_SECS,&_P_FCN_MICROS,&_P_FCN_DEPTH);
onexit(&_P_ONEXIT);

(*(_P_COUNT+1))++;
  time(&t1);
  for (iter=1;iter<=100;iter++)
  {
    
(*(_P_COUNT+2))++;
    for (i=0;i<=size;i++)
      
{(*(_P_COUNT+3))++;
      flag[i]=1;

    
}/*_P_*/

(*(_P_COUNT+4))++;
    primes=0;
    for (i=0;i<=size;i++)
      {
(*(_P_COUNT+5))++;
      if (flag[i]==1)
         {
(*(_P_COUNT+6))++;
         p=i+i+3;
          for(k=i+p;k<=size;k+=p)
            
{(*(_P_COUNT+7))++;
            flag[k]=0;
          
}/*_P_*/

(*(_P_COUNT+8))++;
          primes++;
          }
       
(*(_P_COUNT+9))++;
      }
  
(*(_P_COUNT+10))++;
 }
  
(*(_P_COUNT+11))++;
  time(&t2);
  printf("primes=%d in %ld seconds for 100 iterations\n",primes,(t2-t1));

_P_STOPWATCH(0,0,&_P_FCN_SECS,&_P_FCN_MICROS,&_P_FCN_DEPTH);
}
/*_P_FCN_*/



_P_PROFILE_SETUP(){_P_PROFILE_INIT(12,1);}
