一個有意思的邏輯訓練題目
題目如下:
有兩個大於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,進而可以求出x、y。
step4 小明:那我也知道啦。
小明知道了x*y為三個因子,其中兩個為2,另外一個為質數。
併為2,2,n型別,同時x、y中一個為4。
結合x+y,進而求出另外一個數。