一个有意思的逻辑训练题目

来源:互联网 发布:石家庄seo研究室 编辑:程序博客网 时间:2024/04/27 21:42

题目如下:

有两个大于1小于100的自然数x,y,老师告诉小明两个数的和,告诉小强两个数的积。已知小明和小强足够聪明。

下面是两个人的对话:

小强:我不知道这两个数是多少。(<沉默中>...)
小明:我知道你不知道。(我不知道这两个数是多少,而且你也不知道。)
小强:那我知道了。(你说的对,不过我现在知道了。)
小明:那我也知道啦。(额...那我也知道啦。)

问这两个数是多少?


PS:个人觉得对话改成小括号里面的也是一样的,对解题逻辑没有影响。



下面是我们的逻辑链条:


step1  "小强:我不知道这两个数是多少。"

    常理来说,只给两个自然数x,y之积,小强有很大概率不知道这两个数是多少。但也有一些情况小强会知道,比方说这个积是21(只能分解为两个素数,那么这两个数只能是3和7);或者是25(这两个数只能是5和5);或者是27(这两个数只能是3和9)。换句话说,老师给小强的这个积x*y至少有3个素因子,且这三个素因子不全相同。


step2  小明:我知道你不知道。

    小明说的这句话就比较有意思啦。为什么小明就那么笃定小强一定不知道这两个数是多少呢?下面我们来一一分析:
    就是因为x*y至少有三个不全相同的素因子,小强才不知道这两个数x和y。

   小明敢如此笃定,一定是他知道的信息没有给小强推断出来这两个数的任何可能性。也即他知道x+y后,能判断出x和y没有都是素数的可能性,也没有一个是素数,另一个是这个素数的平方的可能性

    根据1+1猜想(好像还没有完全证明):即任意一个大于2的偶数都可以表示为两个素数的和

                                                              (当然,有些奇数也可以表示为两个素数的和,比如13可以表示为2和11)

            我们可以推知小明拿到的和x+y不可能是偶数 。(如果是的话,那么这两个数有可能都是素数,小强也就不敢那么笃定了)

            这样就完了吗?显然不。
           也就是说这两个数的和x+y是奇数就能保证这两个数不能同时是素数了吗,别忘了有个比较特殊的自然数2(既是偶数又是素数)。那么x+y是奇数,x+y-2还是奇数,且x+y-2是个奇合数(杜绝了一个是2,另一个是3,5,7,11,13这种可能性)

            除此之外,不要忘记了,x+y不能一个是某个素数,另一个是此素数的平方

   至此,我们最好把x+y的可能性在1到200之内遍历一下 :

           1到100+2之内(x+y-2是个奇合数):

           11   17   23  27  29   35  37  41   47  51  53  57 59   65  67  71   77 79  83  87  89   95  97 101

          103到200之内的所有奇数也都满足(这个时候不会有2来参合了)


step3  小强:那我知道啦

          首先我们要明确的一点:小强知道了,但并不代表我们知道了。

 小强知道一偶一奇的时候已经知道这两个数了,那么x*y为三个因子,其中一个为2,另外两个也为质数且相同。

也即是,小强手里的x*y的三个因子有两种可能,假设n为质数且n不等于2


    其一:三个因子分别为:2,2,n

若x=4,y=n,奇偶,

若x=2,y=2n,同为偶

奇偶唯一,成立

 

    其二:2,n,n,(n>=3)

若x=2n,y=n,奇偶

若x=2,y=n^2,奇偶(质数的平方仍为奇数)

X、Y奇偶不唯一,不成立

 

所以小强手里的x*y的三个因子必定为2,2,n类型且其中一个数为4

小强知道x*y,进而可以求出xy。

 

step4 小明:那我也知道啦。

  小明知道了x*y为三个因子,其中两个为2,另外一个为质数。

    并为2,2,n类型,同时x、y中一个为4。

 

结合x+y,进而求出另外一个数。