#include<stdio.h>
//筛选法 求 n 以内的素数
#define NUM 1000
int main()
{
int n = 0;
//多组输入
while (~scanf("%d", &n))//~EOF = 0//为假
{
int arr[NUM] = { 0 };
//将 2 ~ n 之间的正整数 存入数组中
for (int i = 2; i <= n; i++)
{
arr[i] = i;//对应 存储
}
//筛选法
for (int i = 2; i <= n; i++)
{
for (int j = 2; j <= n; j++)//不断遍历数组中的元素
{
if (i == j)//碰到 自身除以自身 就跳过(素数 是只能被 1 和 它自身 整除的数)
{
continue;
}
if (arr[j] % i == 0)
{
arr[j] = 0;//将 不是 素数的数 赋值为 0
}
}
}
//输出
int cnt = 0;//计数器 //统计 数组中被 清零的元素的个数,即 不是素数的数
for (int i = 2; i <= n; i++)
{
if (arr[i] == 0)
{
cnt++;
continue;
}
if (i == 2)
{
printf("%d ", 2);
}
else
{
printf("%d ", arr[i]);
}
}
printf("\n%d\n", cnt);
}
return 0;
}