数学逻辑推理题
这两天读了本论坛的《给讨厌数学的人:数学的奥妙和生活》,里面讲到逻辑学。忽然想到一道这方面的题目,非常烧脑。发给大家自我挑战一下:有一个老师,找了1个两位数,把这个两位数的约数的个数告诉了甲同学,又把这个两位数个位与十位相加后的数告诉了乙同学。
甲乙对话
甲:我不知道这个数是多少。
乙:我也不知道。
甲:我可以确定这是不是偶数。
乙:我知道这个数是多少了!
甲:我也知道了!
求这个数是多少?(注:这个题目的前提条件是甲乙两人都是精于推理之人)
zhangkui9070 发表于 2025-4-7 07:29
题目有问题,既然需要这么复杂的推理,甲乙为何简单几句对话的时间就知道答案了?
甲和乙都是lisp编程高手,当场他俩就各编写了这么一段代码:;返回整数n的约数的个数->甲
(defun tt1(n / list1 i)
(setq i 1 list1 '(1))
(while (<= (setq i (1+ i)) n)
(if (= (rem n i) 0)
(setq list1 (cons i list1))
)
)
(length list1)
)
;返回两位数n的个位与十位数之和->乙
(defun tt2(n)
(+ (fix (/ n 10)) (rem n 10))
)
;返回两位数n的甲乙值
(defun tt()
(setq n 10 list2 nil)
(while (< n 100)
(setq list2 (cons (list n (tt1 n) (tt2 n)) list2))
(setq n (1+ n))
)
(setq list2 (reverse list2))
; 输出表格
(setq @dclfiledame (vl-filename-mktemp nil nil ".csv") ; 默认文件名、默认保存路径,扩展名为csv
fid (open @dclfiledame "w")
)
(vlax-invoke
(vlax-get-or-create-object "Wscript.Shell")
'RUN @dclfiledame) ;任意已经建立关联程序的文件
(princ "两位数" fid) (princ "," fid) (princ "甲" fid) (princ "," fid) (princ "乙" fid) (princ "\n" fid)
(foreach e list2
(progn (princ (car e) fid) (princ "," fid) (princ (cadr e) fid) (princ "," fid) (princ (caddr e) fid) (princ "\n" fid))
)
(close fid)
(princ)
)
然后在WPS表格中用筛选的方法很快得到答案的
本帖最后由 铃声末响春日暖 于 2025-4-7 01:16 编辑
分析一下:
甲:我不知道这个数是多少。
一个两位数,设约数个数为a,则a可能是2,3,4,5,6,7,8,9,10,12。
其中a=3的为25,49;
a=5的为16,81;
a=7的为64;
a=8的为24,30,40,42,54,56,66,70,78,88;
a=9的为36;
a=10的为48,80;
a=12的为60,72,84,90,96。
以上结果均可以通过约数个数定理得到。
则甲的潜台词是:
这个数不可能是36和64!
乙:我也不知道。
一个两位数,设个位数与十位数之和为b,则b的不小于1且不大于18的整数;
而10和99,分别是b=1和b=18中唯一符合的两位数。
则乙的潜台词是:
这个数不可能是10和99!
甲:我可以确定这是不是偶数。
潜台词:
显然a不可能是4,5,6,因为在这种情况下,所列的数既有奇数,又有偶数。
乙:我知道这个数是多少了!
潜台词:
目前所有可能的数:
a=2的为11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97;
a=3的为25,49;
a=8的为24,30,40,42,54,56,66,70,78,88;
a=10的为48,80;
a=12的为60,72,84,90,96。
则b=2的有11;
b=3的有30;
b=4的有13,31,40;
b=5的有23,41;
b=6的有24,42,60;
b=7的有25,43,61,70;
b=8的有17,53,71,80;
b=9的有54,72,90;
b=10的有19,37,73;
b=11的有29,47,56,83;
b=12的有48,66,84;
b=13的有49,67;
b=14的有59;
b=15的有24,78,96;
b=16的有79,88,97;
b=17的有89;
则b只能是2,3,14和17中的一个,才能知道这个数是11,30,59还是89。
甲:我也知道了!
潜台词:
而11,59和89是a=2时的情况,甲不能知道;
30是a=8时的情况,甲可以知道。
故这个数就是30!
烧的一塌糊涂!!
指尖 发表于 2025-4-5 17:55
烧的一塌糊涂!!
是的,这道题顶级难!但解出来超级有成就感 先给出部分推理:
因为是两位数,所以约数的个数≥2。
先假定约数个数为2,则这个数是一个大于等于10小于等于99的质数,由于这样的质数很多,所以甲第一句话说不知道这个数是多少很合理,乙说不知道只能说明这个数不等于10或99,甲接着说可以确定这个数是不是偶数就很好解释了,因为两位数的质数肯定是奇数了!这时乙说我知道这个数了,因为两位数的质数只有21个,所以我们可以用排除法确定:两位数的质数的个位与十位之和唯一的只有11、59、67、89。但是下一句是甲说:“我也知道了!”就有问题了。不管这个数是11、59、67还是89,甲都不可能知道!
所以约数个数为2的假设不成立!!!由上推出这个数是大于10小于99的合数!!! DS给的答案是16。 答案是25;P 约数的个数也不可能是4、5、6,因为约数为4、5、6的数有奇数也有偶数,这种情况下甲说的第二句话:“我知道这个数是不是偶数”就不成立了! 题目有问题,既然需要这么复杂的推理,甲乙为何简单几句对话的时间就知道答案了? 铃声末响春日暖 发表于 2025-4-7 00:43
分析一下:
甲:我不知道这个数是多少。
完全正确,推理高手!
页:
[1]
2