int ss(unsigned int value) { int i, j; static int array[UPPER_LIMIT+1]={0}, flag=1; if (flag) { for (i=2; i*i<UPPER_LIMIT; i++) { if (array[i] == 0) { for (j=i*i; j<=UPPER_LIMIT; j+=i) { array[j] = 1; } } } flag = 0; } if (value < 2 || value > UPPER_LIMIT) { return 0; } return (array[value]^1); } void main() { int i; for (i=0; i<100; i++) { printf("%d %d\n", i, ss(i)); } }