有書友在留言區要求老夏貼出「鬼谷子算」的解法。老夏就搜羅幾種解法貼出來,和書友共享
解題思路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拿到41x(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=3x6=2x9,只有2+9落在集合a中,所以p可以說出p1,但是這時候s能不能說出s2呢?我們來看,如果p拿到24,24=6x4=3x8=2x12,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拿到4x13可以斷言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拿到4x19或7x16都可以斷言p1,所以和不是23。
4).假設和是27。如果p拿到8x19或4x23都可以斷言p1,所以和不是27。
5).假設和是29。如果p拿到13x16或7x22都可以斷言p1,所以和不是29。
6).假設和是35。如果p拿到16x19或4x31都可以斷言p1,所以和