不可能完成的谜题(Impossible Puzzle)
有两个不相等的整数台式电脑电源 x,y 安求其能千里也,它们都大于 1 且和小于 100 ,数学家“和先生”知道这两个数的和,数学家“积先生”知道这两个数的积,他们进行了如下对话:
积先生:我不知道 x 和 y 分别是啥。
和先生:我知道你不知道。
积先生:我现在知道了。
人生无奈的句子
和先生:如果你知道了,那我也知道了。
那么,x 和 y 各是多少?
现在知道为什么这叫做不可能完成的谜题了吧,因为光看这几句“废话”我们似乎根本不可能算出 x 和 y 存货管理制度来。1969 年,荷兰数学家汉斯·弗莱登塔尔(Hans Freudenthal)发表了这个谜题,当时被称为“弗莱登塔尔问题”(Freudenthal Problem双节同庆)。直到 1976 年大卫·斯布罗斯(David Sprows)在《数学杂志》(Mathematics Magazine)上才给出了这个问题的英文版
本。1979 年,马丁·加德纳(Martin Gardner)在他的专栏上又一次提到了这个谜题,并称它为“不可能完成的谜题”,之后这个问题就开始大红大紫了。它有无数个变种,并广泛流传。题目描述看似简单,解答却并不简单。图灵奖获得者艾兹赫尔·迪杰斯特拉(Edsger W. Dijkstra)说他在 1978 年曾经解决了这个问题的另一个版本。之前他无数次尝试心算解决它却屡屡入睡,终于在一个无眠的夜晚,花了六个小时,硬是没有用纸和笔,在脑子里解决了那个问题。在证明过程中,他还小小地用了一下哥德巴赫猜想。
有兴趣的可以自己先想一下,以下为我的解答,用的方法比较low,请勿喷。
对于这题,刚开始没想到应该怎么做,只排除了偶数,然后没思路了,上网百度了一下,没看到纯数学的解答,基本都是编程实现或者乱七八糟的解释,然后想了想,提供以下解答,感觉貌似我的想法比较简单粗暴的感觉,没有什么技巧性,大概因为我是非数学专业,没有高深的思想的缘故,看完如果觉得不好请见谅。
首先,分析下题目,x和y均大于1小于100,不包括1,这点很重要,然后题目给了四个条件,如下:
在分析题目条件前我们有必要先进行一些概念的灌输,或者说想法的基本具备条件。在大于1小于100的自然数中,可以怎么分类?我最先想到的是要么奇数,要么偶数,或者质数和合数,奇数和偶数可能性质没有质数和合数来得那么特别。然后我们要逐一研究下质数之间的联系了,然后想到了黎曼猜想,但是智商实在有限,分析不出来,但是对于有限个数的质数一些比较简单看过去貌似是废话的东西还是可以总结一下,说不准还真能把题目解出来了。于是我就写出了小于100的所有质数,如下所示:
{2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97}
然后我们来看一下这些数的特点,有没有发现之间差距最大为6,最小为2(只有89和97例外,但很容易知道97不符合,所以以下阐述就不包括97了)?这时候你要说不是废话吗?于是我们稍微扩展一下,在这里做个标记,方便下面阐述用,记做性质一:小于100的任何一个数与距离他最近的那个比较小的质数的距离必不超过5,也必不超过12。貌似我讲了一堆废话,但如果想解题,必须记住这一句。然后性质二:小于100的两质数之间连续相差超过6的只有83,89,97,因此可以将小于100的数划分为两部分,2-96这部分的质数中没有连续三个质数是相差6的,96,97,98,99划为一组。性质三:对于小于53的质数,连
续的三个质数,第一个与第三个间隔不超过10。性质4:对于小于等于31的质数,连续的两个之间间隔不会超过4。然后我们就可以接着往下分析了,总结这些性质是为了能够不通过枚举的方法并且能够不用通过手算来达到选出正确解的目的。
条件一:梦见死人是什么预兆积先生:我不知道 x 和 y 分别是啥。
说明积先生知道的乘积分解数中含有的质因数个数至少为3。
条件二:和先生:我知道你不知道。
和先生很肯定的说他知道积先生不知道,这说明了数字的一个特点,即x和y数字之和不能分解成两个质因数之和,反向想之,假如可以分解成两个质因数之和,比如16=3+13,会出现什么情况?和先生这个时候敢肯定的说他知道积先生不知道吗?假如积先生恰好看到的积为3乘13呢?当然这与条件一是矛盾的,因此这两个数之和不能分解成两个质因数之积,否则矛盾。然后这个时候我们反过头来看一下上面的那个故事,他提醒了我们一件事,就是哥德巴赫猜想,我们先来看一下哥德巴赫猜想说的是什么:即任一大于2的偶数都可写成两个质数之和。很简单的一句话,这说明什么?说明了和先生知道的这两个数之和
不能是偶数,否则就如同刚才分析16=3+13那个例子一样,矛盾了。因为哥德巴赫猜想还未被证明,用来证这道题显得不是太好,但有一点可以肯定就是可以显得高大上,所以和为偶数的数全部被否决了。所以和为奇数,这说明有一个数为偶数,另一个数为奇数。
条件三:难忘的一瞬间积先生:我现在知道了。
这说明了一个什么问题?说明基于前面两个条件积先生能够推得出这两数之积,然后接下去我们可以简单粗暴的运用性质一和性质二来完成解题了。假设积等于(2^n)*a*b,a
和b都为质数,则当和大于等于55,则将和x+y分别减去2,4,6,(不包括97,因为97=8+89,可知不符合)由性质一可知必有一者为质数,当减2为质数时,即x+y-2为质数,这时与条件二是矛盾的,不符合,当减4为质数时,则在条件二和先生敢肯定积先生不知道两数的结果吗?因为此时2*(x+y-2)>2*(55-2)>100,积先生若很不幸知道的积是4乘以某质数,则2乘之必然大于100,所以积先生必然不会说出条件一的话,因为组合只能为4加上一质数。若减6为质数时,同理,3乘或2乘该质数显然会大于100,所以积先生也不会说出条件一的话,所以和必须小于等于53。再一次考虑性质一,当对于和大于等于31的数,减去2,4,6必有一个为质数,同时由性质三,可得减去6,8,10后,必有一个为质数,同
时此时和先生敢肯定积先生不知道吗?当减2为质数,由条件二知不符合,当减4或6为质数的情况呢?先说明减4为质数,即x+y-4为质数,则因为2*(x+y-4)>2*(31-4)>50,在这里必须说一句,因为接下来的一段逻辑比较难理解一些,需要认真想想理解,因为2*(x+y-4)大于50说明什么问题?当积先生抽到的是4*(x+y-4),则积先生在和先生回答完条件二时,会想和先生凭什么认为我猜不出来?可以是2和2*(x+y-4)吗?不可以,因为如果是这两个数,那么和先生肯定不敢说我猜不出来(见条件二分析),所以我就知道只能是4和x+y-4啦。由此积先生便猜出了两个数,但是注意此时我们还有第四个条件未用,也就是和先生最后讲的那一句,关键在于积先生猜出来了,但和先生也必须要能够猜得出来,注意到性质三,此时减去6,8,10也至少有一者为质数,无论是减6还是减8或10,减10或6为质数的与3或5相乘会大于100,都则同理积先生也能够猜得出来,此时会出现的状况是和先生在积先生猜出来之后,他会怎么想?他会仔细分析下和的可能分解方式,然后按照积先生的思路走了一遍,发现和分解之后有两组数能够使积先生猜得出来的,那自己究竟是选这两组数中的哪一组呢?这就拿不定了,只能扔硬币了,这也就是说条件四不符合了,所以减4为质数的情况不行,那减6为质数的情况呢?同理积先生能够猜得出来,同时因为由性质三,连续三个质数间距离不会超过10,所以减去6,8,10必会出现两个质数,
工段
分析同上,亦会出现积先生猜得出来,但和先生猜不出来,因此到这里我们就成功把数全部压缩到小于30的奇数当中了。但是实际上对于这里我们的放缩是有点保守了,考虑到减去6,8,10必会出现两个质数,因此由前面分析知道积先生猜得出来,和先生猜不出来,所以可以压缩到25。对于小于等于25的13个奇数(不包括1)中,减2为质数的应排除,理由参见条件二的分析。所以我们离成功又近了一步,只剩下11,17,23三个数。然后看最后一个条件四的分析,希望借助条件四我们能够成功的找到想要的答案。
条件四:和先生:如果你知道了,那我也知道了。
这一句话表明什么呢?说明对于和先生而言,他对和进行了一番分析,然后发现和的分解当中会存在多组满足前面三个条件的解,并且能够使得积先生猜出来后自己也能够猜得出来,在这里我们应该寻找一种简单并且合乎情理的思路,于是我们应该注意到对于什么样的数积先生能够轻易的在和先生回答完条件二之后就能知道?那就是必须满足积先生知道的积当中有至少三个因子,然后参照条件二,x和y只能为一奇一偶,于是我们很容易作一种极端的猜想,假如出现情况是因数分解中含有几个2相乘再乘上一个不为2的质数的情况,那么是不是都符合前面三种条件?但条件四呢?假如出现的条件再更极端些,出现了
两组这样的解的情况,比如11=4+7或11=8+3,会出现和先生猜不出来的情况,他会不知道到底是4和7呢,还是8和3呢。对于上面那需要筛选的三个数,减去4,8,18出现两个差同为质数的即可淘汰,于是我们就剩下需要判断的只有17,这时就需要验证17是否符合,对于17可分解为2+15,4+13,6+11,7+10,8+9,但是要能够让积先生猜得出来的组合只有4+13这一种了,为什么呢?在这里只分析6+11为什么不符合,这组比较难分析,假如为这组,则积先生会想这两数可能为2和33或6和11,但对于条件三的分析,我们知道这两种情况对于积先生而言都是猜不出来的,此时注意我们站在积先生的角度想问题,而不是和先生,不要误认为2与33和为35,所以根据条件三积先生可判断出来,那是和先生的角度了。因此此时和先生知道积先生既然能够猜得出来,必定除了4和13之外不能为其它组合,由此便判断出来了,为什么这组可以呢?看条件四一开始的分析。
所以综上,解为4和13,然后说一句,以上分析过程显得冗长,这也是为了能够讲得详细些不得不做的一点罗嗦的事。