xinyu04

导航

逻辑推理题

已知有两个数 \(2 \leq A,B< 100\),甲知道 \(A+B\), 乙知道 \(A\times B\),对话如下:
甲:我不知道,但是你也不知道
乙:现在我知道了
甲:那我也知道了

问这两个数分别是什么

Solution

假设两个数为 \(A,B\),且都满足 \(2\leq A,B\leq 100\)。甲知道 \(A+B\), 乙知道 \(A\times B\). 由第一句可知,乙并不能推断具体的数字,由此根据质因数分解定理:一个数可以分解为若干个质因数幂次的乘积。所以 \(A\times B\) 必定不是两个质数的乘积,否则乙可以立马推断出来(因为只有这一种分解方式)。

这是结论1:这两个数必不可能都为质数

思考甲的第一句话,他很肯定乙第一次猜不出,利用上面的结论,如果 \(A+B\) 可以分解为两个质数的和,显然他并不能确定乙第一次能不能猜出,因为有阔能乙的乘积恰好就是那两个质数的乘积,这样乙可以立即猜出。根据哥德巴赫猜想,$3\sim 98 $ 以内的偶数都能由两个奇质数的和表示,因此我们可以得到结论2:两数的和为奇数

因此必定为一个奇数和一个偶数。但是注意:\(2\) 也是质数,但是偶数。所以形如 \(2+p\) 结构的数也应该去除。此时满足条件的为: \(11,17,23,27,29,35,37,41,47,51, 53,57,59,65,67,71,77,79,83,87,89,93,95,97\)

除了上述情况,还存在一种可能就是:\(A\times B = 2\times p_1\times p_2\),其中 \(p_1,p_2\) 为质数。可以发现这有三种组合方式来构成 \(A,B\). 思考一下什么情况下,乙在将其分解为上述表达以后可以立即得出答案。即:当三种组合方式中有两种不符合题目条件时,便可以自动得出答案。如果 \(2\times p_1\ge 100\),显然只有一种组合方式: \((2\times p_2) \times p_1\),这里 \(2\times p_2\) 我们假设满足条件。所以我们可以得到第三个结论:形如 \(2\times p_2+p_1\) 的奇数也不满足条件,其中 \(p_1\geq 53。\) 所以由此检验一下,比如:

\[\begin{align} 57 &= 2*2+53\\ 87 &= 2*2+83\\ ... \end{align} \]

此时可以筛选得到的数为:\(11,17,23,27,29,35,37,41,47,51,53\)

再继续挖掘信息,甲在听说乙知道了以后,他也知道了。说明组成乙的乘积的 \(A,B\) 它们的和 \(A+B\) 有且只有一个在上述的数中,否则甲无法唯一确定。

因此更进一步,考虑答案 \(S=A+B\),对于任意一个可能的 pair \((S-x,x)\) (其和为 \(S=A+B\)),仅存在一组 pair \((S-x^*,x^*)\)的乘积的分解对应的和在上述的备选项中。而其他的 pair \((S-y,y)\),其乘积 \(y\times (S-y)\) 可以分解所对应的和有两个甚至以上的 candidate 在上述备选项中。

将备选项集合记为: \(\mathcal{S} = \{11,17,23,27,29,35,37,41,47,51,53 \}\),现在开始检验,比如:

\[23 = 16+7=4+19 \]

而对于 \(16*7\)的分解,仅有 \(16+7\) 为奇数,同样的 \(4*19\) 也只有 \(4+19\) 为奇数,而23此时不能被唯一确定,所以筛去。 那么我们依次检验集合 \(\mathcal{S}\) 中的数,最后只剩下 \(17\). 考虑一下 \(17\) 怎么分解:

\[17 = 4+13 = 5+12 = 6+11=.... \]

最后检验是不是这些pair中,是不是只有一组满足条件。比如说对于 \((6+11)6*11 = 2*3*11\),可能的结果有: \(2+(3*11)=35,(2*3)+11=17,(2*11)+3=25\),但是 \(35,17\) 都在集合中。所以最后只有 \(4,13\) 满足。

posted on 2022-06-18 19:32  Blackzxy  阅读(51)  评论(0编辑  收藏  举报