第1个回答 2015-12-04
鬼谷子问徒是一道古老的逻辑推理题目。其真实性已不可考,但这道古老的题目对今天的数学研究仍有指导意义。
本题为广为流传的一经典逻辑推理题目,原题如下:
孙膑,庞涓都是鬼谷子的徒弟。一天鬼谷子出了这道题目:
他从2到99中选出两个不同的整数,把积告诉孙,把和告诉庞;
庞说:我虽然不能确定这两个数是什么,但是我肯定你也不知道这两个数是什么。
孙说:我本来的确不知道,但是听你这么一说,我现在能够确定这两个数字了。
庞说:既然你这么说,我现在也知道这两个数字是什么了。
请问这两个数字是什么?为什么?
题目解答分析:
1、庞涓能确定孙膑肯定不知道这两个数,可以有这样几个推论。
(A)庞涓手上的数字是4-198之间的数字,因为是两个2-99的数之和。
(B)庞涓的和数一定不能拆成两个质数之和,否则孙膑拿到的积可能拆成唯一一种两个质数之积的情况,此时孙膑就可以猜出这两个数,庞涓不能排除这种可能性,就不会有确信。
歌德巴赫猜想认为任意大于4的偶数都能被拆成两个奇质数之和,但由于两个质数都要小于99,所以庞涓手上的数可能为偶数,但这个偶数会接近200(有182,184,188,190,192,196和198),除此之外,只可能是奇数。
举例:如果庞涓手上是28,可以拆成11+17,当孙膑拿到了181这个积,马上就可以猜出鬼谷子给他的两个数是11和17,与庞涓肯定孙膑不知道这两个数相矛盾,因此有可能拆成两个2-99的质数和的数都要排除。
(C)庞涓的和数一定不是大于55的数。因为大于53的数始终能够拆成质数53和另一个大于2的数,在2-99的限制下,这两个数的乘积只有这唯一一种拆分方法。举例:如果庞涓手上的和数是57,可以拆成53+4,当孙膑拿到212这个积,只有4*53这一种拆分可能性,因为2*106的另一种拆分方法导致有一个数超过99。由此排除55以上的所有所有数。
(D)满足以上条件的这样的数字仅有11个:11,17,23,27,29,35,37,41,47,51,53。
2、孙膑知道自己手中的积,并说本来不知道,但现在知道了。意味着,孙膑看了自己手上的积后,分解因式对应的所有拆分情况中有且仅有一种,两个因数的和是以上11个数中的一个。
举例:当庞涓看到两个数的和是11时,孙膑看到两数的积只能是18(2*9)、24(3*8)或者28(4*7),但不能是30(5*6)。因为如果是30,可以拆成2*15、3*10和5*6三种情况,其中2*15和5*6两种情况下,由于2+15=17和5+6=11都在以上11个数内,所以满足庞涓说出第一句话的要求,但孙膑不能确定鬼谷子的两个数是2和15,还是5和6,所以不会说出他已经知道这两个数的话。回头再看积是18的情况,孙膑可以猜到鬼谷子的两个数是2和9或者3和6,但因为3+6=9不在以上11个数内,不满足庞涓说出第一句话的条件,所以不可能,于是只有2和9唯一一种可能。同理,积是24和28的情况都可以类似推理。
根据这个条件可以得到对应以上11个数时,可能的两个数的情况:
可能的和(由庞涓说出第一句对话推得)
可能的解(由孙膑说出第二句对话推得)
11
(2,9) (3,8)
(4,7)
17
(4,13)
23
(4,19) (7,16)
(10,13)
27
(2,25) (4,23) (5,22) (7,20)
(8,19) (9,18) (10,17) (11,16) (13,14)
29
(2,27) (4,25) (6,23) (7,22)
(8,21) (10,19) (11,18) (12,17) (13,16)
35
(3,32) (4,31) (6,29) (8,27)
(9,26) (10,25) (12,23) (12,23) (14,21) (16,19) (17,18)
37
(5,32) (6,31) (8,29) (9,28)
(16,21) (17,20)
41
(3,38) (4,37) (7,34) (9,32)
(10,31) (12,29) (13,28) (15,26) (16,25) (17,24) (18,23) (19,22)
47
(4,43) (6,41) (7,40) (10,37)
(13,34) (15,32) (16,31) (17,30) (18,29) (19,28) (22,25) (23,24)
51
(2,49) (3,48) (4,47) (5,46)
(7,44) (8,43) (10,41) (11,40) (12,39) (13,38) (14,37) (16,35) (17,34) (18,33)
(19,32) (20,31) (22,29) (23,28) (24,27) (25,26)
53
(5,48) (6,47) (8,45) (10,43)
(12,41) (13,40) (15,38) (16,37) (17,36) (19,34) (20,33) (21,32) (22,31) (23,30)
(24,29) (25,28) (26,27)
3、庞涓是知道自己手中的和数,当孙膑猜出两个数后,庞涓也知道了这两个数字,由于庞涓并不知道两数积,所以只能从以上表格出发确定,这就要求第二步有唯一解。
举例:如果庞涓拿到的和是11,那么有3种情况满足孙膑说出第二句对话的条件,所以他并不能确定鬼谷子的两个数是2和9,3和8还是4和7。这就不符合庞涓说出第三句对话的条件。
因此,庞涓看到的和只可能是17,而孙膑看到的积是52,鬼谷子的两个数是4和13。
第二步求解过程比较复杂,可以借助VBA或C++等工具计算。主要逻辑包含三个循环,第一步循环以上11个数,记为S;在此循环内,第二步从2到(S-1)/2循环,找出所有A+B=S的正整数解A和B;在此循环内,第三步从2到循环,找出所有x*y=AB的所有正整数解(借助mod函数)x和y,然后判断x+y=11/17/23/27/29/35/37/41/47/51/53的情况(可以全部列出,也可以增加一个循环判定),如果只有唯一一次等式成立,则A和B为符合要求的解。