鬼谷子算的几种解法

作品:《大宋之天子门生

    有书友在留言区要求老夏贴出“鬼谷子算”的解法。老夏就搜罗几种解法贴出来,和书友共享

    解题思路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,所以和不是35。

    7).假设和是37。如果p拿到8x29或11x26都可以断言p1,所以和不是37。

    8).假设和是41。如果b拿到4x37或8x33,都可以断言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必须在以下数中:

    11172327293537414753

    另外一方面,只要庞的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^(n1)*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的可能值只能在

    17294153

    中。让我们继续缩小这个表。

    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)。

    ;



鬼谷子算的几种解法  

语言选择