#include <stdio.h>
#include <stdlib.h>
typedef unsigned int U;int main(void){char *a;U n;register U x,l,i,t;fprintf(
stderr,"n=?\n> ");fflush(stdout);scanf("%u",&n);if(n==2)return !printf("2\n");
if(n<2)return 0;l=(n-1)/2;a=malloc(8*l);if(!a)return fprintf(stderr,"a==NULL"),
1;printf("2\n",n);memset(a,0xFF,sizeof(char)*l);for(i=0,x=3;i<l;i++,x+=2){if(!a
[i])continue;printf("%d\n",x);for(t=i+x;t<l;t+=x) a[t]=0;}free(a);return 0;}

アリストテレスのふるい