#include <stdio.h> #include <math.h> #define TRUE 1 #define FAULSE 0 void main() { int i,a[1001],j,n; int *p=a; for (i=2; i<1001; i++) /*将数组的各个元素赋值为0*/ *(p+i) = TRUE; for ( i=2; i<1001; i++) { if ( *(p+i)==FAULSE ) continue; for (n=2; n<=sqrt(i); n++) /*用来判定素数*/ { if ( i%n==0 ) break; } if ( n <= sqrt(i) ) *(p+2) = FAULSE; for (j=2*n; j<1001; j+=n) /*用来移除那些非素数*/ *(p+j) = FAULSE; } for ( i=2; i<1001; i++) { if ( *(p+i)==TRUE ) printf("%d ",i); } }