我是今天发现的,不知对不对???因为没有考虑高精度情况 int main(void) { int i, k, n; printf("最小连续n个数(1~100)? "); scanf("%d", &n); i = 2; while (1) { if (1 == n) { printf("最小的连续1个合数为4/n"); break; } for (k = i; k < i + n; k++) if (k % 2 && isPrime(k)) break; // 注意这isPrime(k)可加可不加。。如果加了,则不可能出现 // 连续偶数个合数,如果不加的话,比如说,8、9是最小的连续2个合数 // 但是10也是合数,所以在于你怎样看此题,在我的代码中,我加上了 if (k == i + n && isPrime(k)) { printf("最小的连续%d个合数为%d~%d/n", n, i, k - 1); break; } i += 2; } return 0; }