#include <stdio.h>
#define MAX_PRIMES 100
unsigned int g_curPrimeIndex = 0;
unsigned int g_primes[MAX_PRIMES];
bool insertPrime(unsigned int n)
{
/* Variables */
unsigned int i;
/* Quick exits */
if (n<2) return false; /* Avoid an infinite loop */
if (n==2) goto add_prime; /* 2 is an exception to the following */
if (!(n&1)) return false; /* Aside from 2, prime numbers are never even */
/* Check to see if the number is prime or not */
for(i=0; /* initialize */
g_primes[i]<(n>>1); /* insure that we don't perform redundant operations */
i++) /* go to the next test value */
{
/* Check to see if this can divide evenly into the number */
if ((n % g_primes[i]) == 0)
/* If so, return false */
return false;
/* Avoid an out-of-bounds error (SIGSEGV) */
if ((i+1)==MAX_PRIMES)
/* Exit the loop */
break;
}
add_prime:
/* The number appears to be prime, add it */
g_primes[g_curPrimeIndex++] = n;
/* Return */
return true;
}
/* Main loop */
int main()
{
unsigned int i=0;
unsigned int n=1;
while(g_curPrimeIndex < MAX_PRIMES)
{
if (insertPrime(n))
{
printf("%u\t", n);
if(++i==8)
{
printf("\n");
i=0;
}
}
n++;
}
return 0;
}