C言語 素数の表示

/*
 正の整数(3〜999)を入力し、入力した値までの素数を出力する。
 処理は繰り返し行えることとし、入力値が0の場合に処理終了とする。
 */
#include <stdio.h>

int main() {
	int i, j, n, k = 0, d[200], cnt = 0;
	for (;;) {
		printf("整数3〜999を入力-->");
		scanf("%d", &n);
		if (n >= 3 && n <= 999) {
			//break;
			for (i = 2; i <= n; i++) {
				cnt = 0;
				for (j = 2; j <= i; j++) {
					if (i % j == 0) {
						cnt++;
					}
				}
				if (cnt == 1) {
					d[k] = i;
					k++;
					d[k + 1] = -1;
				}
			}
			for (k = 0, i = 1; d[k] != -1; k++, i++) {
				printf("%4d", d[k]);
				if (i % 10 == 0) {
					printf("\n");
				}
			}
			printf("\n %dまでの素数は%d個です\n", n, i - 1);
			k = 0;
		} else if (n == 0) {
			return 0;
		} else
			printf("error\n");
	}
}