/*  Print some primes, using sieve of Eratosthenes.
 *  Version 1.
 *  See:  http://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
 *  Author:  Yotam Medini  yotam.medini@gmail.com -- Created: 2007/May/09
 */
#include <stdio.h>

void cancel(int* sieve, int sieve_len, int d) 
{
    int  k = d * d;
    while (k < sieve_len) {
        sieve[k] = 0;
        k += d;
    }
} /* cancel */


int main(int argc, char** argv)
{
    enum { N = 10000 };
    int  sieve[N];
    int  k, d;
    k = 0;
    while (k < N) {
        sieve[k] = 1;
        k++;
    }
    d = 2;  k = 1;
    while (d < N) {
         if (sieve[d] == 1) {
              printf("Prime[%5d] = %6d\n", k, d);   k++;
              cancel(sieve, N, d);
         }
         d++;
    }
    return 0;    
} /* main */

