CF576A Vasya and Petya's Game
题目描述
Vasya 和 Petya 正在玩一个简单的游戏。Vasya 想了一个 $x$,这个数在 $1$ 到 $n$ 之间,Petya 要猜出这个数。
Petya 可以问这样的问题:“未知的数是否能被 $y$ 整除?”。
游戏的规则如下:首先,Petya 可以一次性提出他感兴趣的所有问题(他也可以一个问题都不问),然后 Vasya 针对每个问题分别回答“是”或“否”。在得到所有答案后,Petya 须确定 Vasya 想到的是哪个数。
可惜的是,Petya 不熟悉数论。请你帮他找出,保证能猜出 Vasya 想到的数所需的最少问题数,并给出那些 $y_i$,即他应该问题的内容。
输入格式
一行一个整数 $n$($1 \leq n \leq 10^{3}$)。
输出格式
输出一个整数 $k$,代表所需问题的数量($0 \leq k \leq n$),接着输出 $k$ 个整数,分别代表每个问题中的 $y_i$($1 \leq y_i \leq n$)。
如果存在多种最优方案,你可以输出任意一种。
说明/提示
第一组样例题解中的问题序列实际上是正确的。
如果未知数不能被序列中的任意一个数整除,那么它等于 $1$。
如果未知数可以被 $4$ 整除,那么它等于 $4$。
如果未知数可以被 $3$ 整除,那它等于 $3$。
否则,它等于 $2$。因此,这样的问题序列能帮助你猜出未知数。可以证明长度为 $2$ 或更短的问题序列都不可能做到这一点。
由 ChatGPT 5 翻译