有書友在留言區要求老夏貼出“鬼谷子算”的解法。老夏就搜羅幾種解法貼出來,和書友共享
解題思路1:
假設數為X,Y;和為XYA,積為XYB.
根據龐第一次所說的:“我肯定你也不知道這兩個數是什么”。由此知道,XY不是兩個素數之和。那么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為....,當然了,有些數(3056215)出現不止一次。
這時候,孫依據自己的數比較計算后,“我現在能夠確定這兩個數字了。”
我們依據這句話,和我們算出來的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就是M53a,于是孫知道,這原來兩個數中至少有
一個含有53這個因子,因為53是個素數。可是小于100,又有53這個因子的,只能是
53本身,所以孫就可以只憑這個積53a推斷出這兩個數術53和a。所以如果龐知道的
S大于54的話,他就不敢排除兩個數是53和a這種可能,也就不敢貿然說“但是我肯定
你也不知道這兩個數是什么”這種話。
如果5399
如果S9899,那么龐可以立刻判斷出,這兩個數只能是98和99,而且M只能是9899,
孫也可以知道這兩個術,所以顯然不可能。
2)按照龐的第一句話的后半部分,我們還可以肯定龐知道的和S不可以表示為兩個素數的和。
否則的話,如果鬼谷子選的兩個數字恰好就是這兩個素數,那么孫知道積M后,就可以得到唯一的素因子分解,判斷出結果。于是龐還是不敢說“但是我肯定你也不知道這兩個數是什么”這種話。
根據哥德巴赫猜想,任何大于4的偶數都可以表示為兩個素數之和,對54以下的偶數,猜想肯定被驗證過,所以S一定不能是偶數。
另外型為S2p的奇數,其中p是奇素數的那些S也同樣要排除掉。
還有S51也要排除掉,因為5117217。如果鬼谷子選的是(17,217),那么孫知道
的將是M21717,他對鬼谷子原來的兩數的猜想只能是(17,217)。(為什么51要單獨拿出來,要看下面的推理)
3)于是我們得到S必須在以下數中:
另外一方面,只要龐的S在上面這些數中,他就可以說“但是我肯定你也不知道這兩個
數是什么”,因為這些數無論怎么拆成兩數和,都至少有一個數是合數(必是一偶一
奇,如果偶的那個大于2,它就是合數,如果偶的那個等于2,我們上面的步驟已經保
證奇的那個是合數),也就是S只能拆成
a)S2ab或b)Sa2nb
這兩個樣子,其中a和b都是奇數,n1。
那么(下面我說的“至少兩組數”中的兩組數都不相同,而且的確存在(也就是那些
數都小于100)的理由我就不寫了,根據條件很顯然)
a)或者孫的M2ab,孫就會在(2a,b)和(2,ab)至少兩組數里拿不定主意(a和
b都是奇數,所以這兩組數一定不同);
b)或者M2nab,
如果n1,那么孫就會在(2(n1)a,2b)和(2na,b)至少兩組數里拿不定主意;
如果n1,而且a不等于b,那么孫就會在(2a,b)和(2b,a)至少兩組數里拿不定主
如果n1,而且a等于b,這意味著Sa2a3a,所以S一定是3的倍數,我們只要
討論S27就可以了。27如果被拆成了S918,那么孫拿到的M918,他就會在
(9,18)和(27,6)至少兩組數里拿不定主意。
(上面對51的討論就是從這最后一種情況的討論發現的,我不知道上面的論證是否
過分煩瑣了,但是看看51這個“特例”,我懷疑嚴格的論證可能就得這么煩)
現在我們知道,當且僅當龐得到的和數S在
中,他才會說出“我雖然不能確定這兩個數是什么,但是我肯定你也不知道這兩個數
是什么”這句話
孫臏可以和我們得到同樣的結論,他還比我們多知道那個M。
4)孫的話“我現在能夠確定這兩個數字了”表明,他把M分解成素因子后,然后組合成
關于鬼谷子的那兩個數的若干個猜想中,有且僅有一個猜想的和在C中。否則的話,他
還是會在多個猜想之間拿不定主意。
龐涓聽了孫的話也可以得到和我們一樣的結論,他還比我們多知道那個S。
5)龐的話“我現在也知道這兩個數字是什么了”表明,他把S拆成兩數和后,也得到了
關于鬼谷子的那兩個數的若干個猜想,但是在所有這些拆法中,只有一種滿足4)里的
條件,否則他不會知道究竟是哪種情況,使得孫臏推斷出那兩個數來。
于是我們可以排除掉C中那些可以用兩種方法表示為S2np的S,其中n1,p為素數。
因為如果S2n1p12n2p2,無論是(2n1,p1)還是(2n2,p2)這兩種情況,孫臏都
可以由M2n1p1或M2n2p2來斷定出正確的結果,因為由M得到的各種兩數組合,
只有(2n,p)這樣的組合,兩數和才是奇數,從而在C中,于是孫臏就可以宣布自己知道
了是怎么回事,可龐涓卻還得為(2n1,p1)還是(2n2,p2)這兩種情況犯愁。
因為114783,23419167,274231611,354311619,37829325,
474431631。于是S的可能值只能在
中。讓我們繼續縮小這個表。
29不可能,因為29227425。無論是(2,27)和(4,25),孫臏都可以正確判斷出來:
a)如果是(2,27),M2272333,那么孫可以猜的組合是(2,27)(3,18)(6,9),
后面兩種對應的S為21和15,都不在C中,故不可能,于是只能是(2,27)。
b)如果是(4,25),M4252255,那么孫可以猜的組合是(2,50)(4,25)(5,20)
(10,10)。只有(4,25)的S才在C中。
可是龐涓卻要為孫臏的M到底是227還是425苦惱。
41不可能,因為414371031。后面推理略。
53不可能,因為536471637。后面推理略。
研究一下17。這下我們得考慮所有17的兩數和拆法:
(2,15):那么M21523565,而6511也在C中,所以一定不是這個M,否則4)
的條件不能滿足,孫“我現在能夠確定這兩個數字了”的話說不出來。
(3,14):那么M314237221,而22123也在C中。后面推理略。
(4,13):那么M4132213。那么孫可以猜的組合是(2,26)(4,13),只有(4,13)
的和在C中,所以這種情況孫臏可以說4)中的話。
(5,12):那么M5122235320,而32023也在C中。后面推理略。
(6,11):那么M6112311233,而23335也在C中。后面推理略。
(7,10):那么M710257235,而23537也在C中。后面推理略。
(8,9):那么M8922233324,而32427也在C中。后面推理略。
于是在S17時,只有(4,13)這種情況,孫臏才可以猜出那兩數是什么,既然如此,龐涓就知道這兩個數是什么,說出“我現在也知道這兩個數字是什么了”。聽了龐涓的話,于是我們也知道,這兩數該是(4,13)。