题解 | #筛选法求素数#
筛选法求素数
http://www.nowcoder.com/practice/06c3dcc303654ef4926654023eca1e5a
int main() {
int n;
while (scanf("%d", &n) != EOF) {
int m[n], count = 0, val = 0;
for (int x = 2; x <= n; x++) { //判断2-n之间的素数
for (int y = 1; y <= x; y++)
if (x % y == 0) count++;
if (count == 2) m[val++] = x; //将素数值放入数组中
count = 0;
}
for (int z = 0; z < val; z++) //依次输出数组中的素数
printf("%d ", m[z]);
//清0个数为 n - 素数个数 - 1,1为val值在最后一次赋值后还会自加1,所以这里要减1
printf("\n%d\n", n - val - 1);
}
return 0;
}