>>9を見てちょっとやってみた
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
int is_prime(int n,int*buf,int p){int i;for(i=0;i<p;i++)if(n%buf[i]==0)return 0;return 1;}
int get_prime(int n,int*buf){int i,j,p,m=sqrt((double)n);j=p=1;buf[0]=2;i=3;while(i<=n){if(is_prime(i,buf,j))buf[p++]=i;if(i<=m)j=p;i++;}return p;}
int main(int argc,char*argv[]){int i=0,n,m,p;int*buf;if(argc<2){fprintf(stderr,"usage error : no input\n");exit(1);}
while(*(argv[1]+i))if(!isdigit(*(argv[1]+i++))){fprintf(stderr,"usage error : illeagal input\n");exit(1);}
n=atoi(argv[1]);if(n<2){fprintf(stderr,"usage error : illeagal input\n");exit(1);}buf=(int*)malloc(sizeof(int)*(n-1));
if(!buf){fprintf(stderr,"out of memory\n");exit(1);}p=get_prime(n,buf);for(i=0;i<p;i++){printf(" %d",buf[i]);if(!((i+1)%10))printf("\n");}
printf("\ninput = %d\ncount = %d\n",n,p);free(buf);return 0;}