#include <stdio.h> int main() { int n, i, j; int arr[100] = {0}; //设初始数组元素为100个0 scanf("%d", &n); for(i=2; i<=n; i++) //数组元素为从2到n arr[i] = i; //为了方便,设数组下标和数组元素一样,从2到n for(j=2; j<=n; j++) //外循环为2到n,即被2到n的数整除 { for(i=j+1; i<=n; i++) //内循环为遍历数组进行比较,每趟循环的数组下标从j+1开始 { if(arr[i] % j == 0) //若能被j(从2到n)整除 arr[i] = 0; //还原为0 } } for(i=2,j=0; i<=n; i++) //遍历数组, { if(arr[i] != 0) printf("%d ", arr[i]); //未被清0的数打印出来 else j++; //清0的数,计数+1 } printf("\n"); //换行 printf("%d", j); //打印被清0的数的个数 return 0; }