#include<stdio.h>
#define PRIME     1
#define NOT_PRIME 0

/*
 * sieve of Erathosthenes
 * tamada@oikaze.com
 */
int main(int argc, char *argv[]){
    unsigned long int *primes;
    unsigned long int max, min, i, j;

    if(argc < 2)  max = 1000;
    else          max = atoi(argv[1]);
    if(argc < 3)  min = 0;
    else          min = atoi(argv[2]);
    if(argc <= 0) max = 1000;
    primes = (unsigned long int *)malloc(sizeof(unsigned long int) * (max + 1));

    primes[1] = NOT_PRIME;
    for(i = 0; i <= max; i++) primes[i] = PRIME;
    for(i = 2; i <= max; i++){
        if(primes[i] == PRIME){
            for(j = i + i; j <= max; j = j + i)
            primes[j] = NOT_PRIME;
        }
    }
    for(i = min; i <= max; i++){
        if(primes[i] == PRIME) fprintf(stdout, "%8lu\n", i);
    }
    exit(0);
}
