<鬼谷子问徒>

孙膑,庞涓都是鬼谷子的徒弟,一天鬼谷子出了这道题目:他从2到99选出两个不同的整数,把和告诉孙,把积告诉庞.庞说:我虽不能确定这两个数是什么,但是我肯定你也不知道这两个数是什么.孙说:我本来的确不知道,但是听你这么一说,我现在能确定这两个数字了.庞说既然你这么说,我现在也知道这两个数字是什么了.请问这两个数字是什么?为什么?

4和13,这是鬼谷子的算题

具体分析见下:

解题思路1:

假设数为 X,Y;和为X+Y=A,积为X*Y=B.
根据庞第一次所说的:“我肯定你也不知道这两个数是什么”。由此知道,X+Y不是两个素数之和。那么A的可能11,17,23,27,29,35,37,41,47,51,53,57,59,65,67,71,77,79,83,87,89,95,97.
我们再计算一下B的可能值:
和是11能得到的积:18,24,28,30
和是17能得到的积:30,42,52,60,66,70,72
和是23能得到的积:42,60...
和是27能得到的积:50,72...
和是29能得到的积:...
和是35能得到的积:66...
和是37能得到的积:70...
......
我们可以得出可能的B为....,当然了,有些数(30=5*6=2*15)出现不止一次。

这时候,孙依据自己的数比较计算后,“我现在能够确定这两个数字了。”
我们依据这句话,和我们算出来的B的集合,我们又可以把计算出来的B的集合删除一些重复数。

和是11能得到的积:18,24,28
和是17能得到的积:52
和是23能得到的积:42,76...
和是27能得到的积:50,92...
和是29能得到的积:54,78...
和是35能得到的积:96,124...
和是37能得到的积:,...
......
因为庞说:“既然你这么说,我现在也知道这两个数字是什么了。”那么由和得出的积也必须是唯一的,由上面知道只有一行是剩下一个数的,那就是和17积52。 那么X和Y分别是4和13。

解题思路2:

说话依次编号为S1,P1,S2。
设这两个数为x,y,和为s,积为p。
由S1,P不知道这两个数,所以s不可能是两个质数相加得来的,而且s<=41,因为如果s>41,那么P拿到41×(s-41)必定可以猜出s了(关于这一点,参考老马的证明,这一点很巧妙,可以省不少事情)。所以和s为{11,17,23,27,29,35,37,41}之一,设这个集合为A。
1).假设和是11。11=2+9=3+8=4+7=5+6,如果P拿到18,18=3×6=2×9,只有2+9落在集合A中,所以P可以说出P1,但是这时候S能不能说出S2呢?我们来看,如果P拿到24,24=6×4=3×8=2×12,P同样可以说P1,因为至少有两种情况P都可以说出P1,所以A就无法断言S2,所以和不是11。
2).假设和是17。17=2+15=3+14=4+13=5+12=6+11=7+10=8+9,很明显,由于P拿到4×13可以断言P1,而其他情况,P都无法断言P1,所以和是17。
3).假设和是23。23=2+21=3+20=4+19=5+18=6+17=7+16=8+15=9+14=10+13=11+12,咱们先考虑含有2的n次幂或者含有大质数的那些组,如果P拿到4×19或7×16都可以断言P1,所以和不是23。
4).假设和是27。如果P拿到8×19或4×23都可以断言P1,所以和不是27。
5).假设和是29。如果P拿到13×16或7×22都可以断言P1,所以和不是29。
6).假设和是35。如果P拿到16×19或4×31都可以断言P1,所以和不是35。
7).假设和是37。如果P拿到8×29或11×26都可以断言P1,所以和不是37。
8).假设和是41。如果B拿到4×37或8×33,都可以断言P1,所以和不是41。
综上所述:这两个数是4和13。

解题思路3:

孙庞猜数的手算推理解法

1)按照庞的第一句话的后半部分,我们肯定庞知道的和S肯定不会大于54。

因为如果和54恰好是53和a,那么孙知道的积M就是M=53*a,于是孙知道,这原来两个数中至少有
一个含有53这个因子,因为53是个素数。可是小于100,又有53这个因子的,只能是
53本身,所以孙就可以只凭这个积53*a推断出这两个数术53和a。所以如果庞知道的
S大于54的话,他就不敢排除两个数是53和a这种可能,也就不敢贸然说“但是我肯定
你也不知道这两个数是什么”这种话。

如果53+99
如果S=98+99,那么庞可以立刻判断出,这两个数只能是98和99,而且M只能是98*99,
孙也可以知道这两个术,所以显然不可能。

2)按照庞的第一句话的后半部分,我们还可以肯定庞知道的和S不可以表示为两个素数的和。

否则的话,如果鬼谷子选的两个数字恰好就是这两个素数,那么孙知道积M后,就可以得到唯一的素因子分解,判断出结果。于是庞还是不敢说“但是我肯定你也不知道这两个数是什么”这种话。

根据哥德巴赫猜想,任何大于4的偶数都可以表示为两个素数之和,对54以下的偶数,猜想肯定被验证过,所以S一定不能是偶数。

另外型为S=2+p的奇数,其中p是奇素数的那些S也同样要排除掉。

还有S=51也要排除掉,因为51=17+2*17。如果鬼谷子选的是(17,2*17),那么孙知道
的将是M=2*17*17,他对鬼谷子原来的两数的猜想只能是(17,2*17)。(为什么51要单独拿出来,要看下面的推理)

3)于是我们得到S必须在以下数中:
11 17 23 27 29 35 37 41 47 53

另外一方面,只要庞的S在上面这些数中,他就可以说“但是我肯定你也不知道这两个
数是什么”,因为这些数无论怎么拆成两数和,都至少有一个数是合数(必是一偶一
奇,如果偶的那个大于2,它就是合数,如果偶的那个等于2,我们上面的步骤已经保
证奇的那个是合数),也就是S只能拆成
a) S=2+a*b 或 b) S=a+2^n*b
这两个样子,其中a和b都是奇数,n>=1。
那么(下面我说的“至少两组数”中的两组数都不相同,而且的确存在(也就是那些
数都小于100)的理由我就不写了,根据条件很显然)
a)或者孙的M=2*a*b,孙就会在(2*a,b)和(2,a*b)至少两组数里拿不定主意(a和
b都是奇数,所以这两组数一定不同);
b)或者M=2^n*a*b,
如果n>1,那么孙就会在(2^(n-1)*a,2*b)和(2^n*a,b)至少两组数里拿不定主意;
如果n=1,而且a不等于b,那么孙就会在(2*a,b)和(2b,a)至少两组数里拿不定主
意;
如果n=1,而且a等于b,这意味着S=a+2*a=3a,所以S一定是3的倍数,我们只要
讨论S=27就可以了。27如果被拆成了S=9+18,那么孙拿到的M=9*18,他就会在
(9,18)和(27,6)至少两组数里拿不定主意。
(上面对51的讨论就是从这最后一种情况的讨论发现的,我不知道上面的论证是否
过分烦琐了,但是看看51这个“特例”,我怀疑严格的论证可能就得这么烦)

现在我们知道,当且仅当庞得到的和数S在
C={11, 17, 23, 27, 29, 35, 37, 41, 47, 53}
中,他才会说出“我虽然不能确定这两个数是什么,但是我肯定你也不知道这两个数
是什么”这句话

孙膑可以和我们得到同样的结论,他还比我们多知道那个M。

4)孙的话“我现在能够确定这两个数字了”表明,他把M分解成素因子后,然后组合成
关于鬼谷子的那两个数的若干个猜想中,有且仅有一个猜想的和在C中。否则的话,他
还是会在多个猜想之间拿不定主意。

庞涓听了孙的话也可以得到和我们一样的结论,他还比我们多知道那个S。

5)庞的话“我现在也知道这两个数字是什么了”表明,他把S拆成两数和后,也得到了
关于鬼谷子的那两个数的若干个猜想,但是在所有这些拆法中,只有一种满足4)里的
条件,否则他不会知道究竟是哪种情况,使得孙膑推断出那两个数来。

于是我们可以排除掉C中那些可以用两种方法表示为S=2^n+p的S,其中n>1,p为素数。
因为如果S=2^n1+p1=2^n2+p2,无论是(2^n1,p1)还是(2^n2,p2)这两种情况,孙膑都
可以由M=2^n1*p1或M=2^n2*p2来断定出正确的结果,因为由M得到的各种两数组合,
只有(2^n,p)这样的组合,两数和才是奇数,从而在C中,于是孙膑就可以宣布自己知道
了是怎么回事,可庞涓却还得为(2^n1,p1)还是(2^n2,p2)这两种情况犯愁。

因为11=4+7=8+3,23=4+19=16+7,27=4+23=16+11,35=4+31=16+19,37=8+29=32+5,
47=4+43=16+31。于是S的可能值只能在
17 29 41 53
中。让我们继续缩小这个表。

29不可能,因为29=2+27=4+25。无论是(2,27)和(4,25),孙膑都可以正确判断出来:
a)如果是(2,27),M=2*27=2*3*3*3,那么孙可以猜的组合是(2,27)(3,18)(6,9),
后面两种对应的S为21和15,都不在C中,故不可能,于是只能是(2,27)。
b)如果是(4,25),M=4*25=2*2*5*5,那么孙可以猜的组合是(2,50)(4,25)(5,20)
(10,10)。只有(4,25)的S才在C中。
可是庞涓却要为孙膑的M到底是2*27还是4*25苦恼。

41不可能,因为41=4+37=10+31。后面推理略。

53不可能,因为53=6+47=16+37。后面推理略。

研究一下17。这下我们得考虑所有17的两数和拆法:
(2,15):那么M=2*15=2*3*5=6*5,而6+5=11也在C中,所以一定不是这个M,否则4)
的条件不能满足,孙“我现在能够确定这两个数字了”的话说不出来。
(3,14):那么M=3*14=2*3*7=2*21,而2+21=23也在C中。后面推理略。
(4,13):那么M=4*13=2*2*13。那么孙可以猜的组合是(2,26)(4,13),只有(4,13)
的和在C中,所以这种情况孙膑可以说4)中的话。
(5,12):那么M=5*12=2*2*3*5=3*20,而3+20=23也在C中。后面推理略。
(6,11):那么M=6*11=2*3*11=2*33,而2+33=35也在C中。后面推理略。
(7,10):那么M=7*10=2*5*7=2*35,而2+35=37也在C中。后面推理略。
(8,9):那么M=8*9=2*2*2*3*3=3*24,而3+24=27也在C中。后面推理略。

于是在S=17时,只有(4,13)这种情况,孙膑才可以猜出那两数是什么,既然如此,庞涓就知道这两个数是什么,说出“我现在也知道这两个数字是什么了”。听了庞涓的话,于是我们也知道,这两数该是(4,13)。

参考答案:

这两个数字是4和13。原因同上。
温馨提示:答案为网友推荐,仅供参考
第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为符合要求的解。