发信人: righthand(木头龙)
整理人: gddgca(2003-03-13 10:16:36), 站内信件
|
原题:
老师想好了两个大于1小于50的数,告诉了学生A它们的积,告诉了学生B它们的和
,
然后要求学生们回答这两个数。
A:我不知道这两个数是什么 (1)
B:我知道你不知道这两个数,我也不知道 (2)
A:哈,我知道了 (3)
B:哈,我也知道了 (4)
C:哈,我也知道了
D:哈,我也知道了
E:哈,我也知道了
这两个数到底是什么?
解法:
设这两个数为a和b,和为s,积为p
由(2)可知,s不能分解为两个素数之和,否则B不能判定A不知道这两个数
由于数学上的定理,偶数可以分解为两个素数之和(我用穷举法试过,100以内都OK)
再排除2+素数,s的可能值的集合为S={11,17,23,27,29,35,37,41,51,53,57,59,65,67,71,77,79,83,87,89,93,97}
从(2)得到的全部信息就是s∈S
而(3)A知道是哪两个数,说明将p分解成两个因子,其所有分法中只有一种使得两个因子之和属于集合S。……(5)
观察这样的一组数(x,y)其中,x=2z,z<25,y为大于25的素数,因为2y>50,则由p1=xy可以判断出x、y两个数,而如果s1=x+y ∈S,则x、y满足条件(1)(2)(3)……(6)。
但如果对于同一个s1存在两个或以上的p1满足上面的条件,则x、y不满足条件(4),即此s1不是正解……(7)。
显然,if s1>=4+31=35,必可找到p1=29*(s1-29),p2=31*(s1-31)都满足(6)
由(7),可排除。这样我们得到一个更小的子集T={11,17,23,27,29}。
再观察数p1=2^n*x,其中x为素数,则p1的因子中只有(2^n,x)这组可能属于S,即如果s1=2^n+x∈S,则(2^n,x)满足条件(1)(2)(3),同样如果对于同一个s1存在两个或以上的p1满足此条件,此s1不是正解……(8)
而11=8+3=4+7,23=4+19=16+7,27=4+23=8+19都可以排除
这样我们就得到两个数s=17和s=29
if s=29 then p1=2*27 p2=16*13满足条件(1)(2)(3),可排除
因此,s=17
由此可推出两个数为4和13
我不是学数学的,表述不清晰,篇幅也比较长,如果有什么问题,请大家指正。
---- 老龙不灌水,当我是木头 |
|