发信人: 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 
 
 我不是学数学的,表述不清晰,篇幅也比较长,如果有什么问题,请大家指正。 
 
  ---- 老龙不灌水,当我是木头   | 
 
 
 |