/* Versão do Crivo de Eratósthenes com que pega o N da linha de comando */ 

#include <stdio.h>
#include <stdlib.h>

main(int argc, char *argv[]) {
  int i, j, N, *a; 

  if (argc != 2) {
    printf("Digite o tamanho do crivo após o nome do programa na linha de comando.\n");
    exit(0);
  }
  N = atoi(argv[1]);
  a = malloc(N*sizeof(int));
  for (i=2; i<N; i++) a[i]=1;
  for (i=2; i<N; i++)
    if (a[i]) {
      printf("%5d\n", i);
      for (j=i; i*j<N; j++) a[i*j] = 0;
    }
}
      
