两个自然数的寻找过程

【题目】

有两个介于[299]的自然数,甲知道它们的积,乙知道它们的和。

甲:我知道你不知道。                      1

乙:我知道你也不知道。                    2

甲:我知道了。                             3

乙:我也知道了。                           4

求这两个数。

 

【问题背景】

这是念大学的时候一位高中同学email给我的问题,题目结构及意思比较简单明确,可求解过程似乎并不那么容易。由于一直没思路,弄得整两周没上好课,天天在纸上比比划划,突然有一个晚上得到一些思路,找到了那两个数,并通过Fortran编程验证,完事高兴了好一阵。下面列出我的思路和求解过程,和有兴趣的朋友一起讨论。

 

【答案】

 413

 

【数值资料】

下面是1~100以内的质数(共25个):

020305071113171923293137

41434753596167717379838997

 

【程序穷举】

//Fortran程序找不到了

//以后补一个Java

 

【思路及求解】

从四句话要分析出这几个数。

第(1)句只能确定甲知道的积大于4,这样他才可以肯定乙的手里的和大于4,因此乙无法确定那两个数。

第(2)句可以得出乙知道的和无法分解成两个质数,否则乙不敢说这句话,这样通过哥德巴赫猜想可以确定乙知道的和不是偶数,同时质数加2构成的奇数也被排除在外。由此乙知道的和一定在下面25个数中:

01 03 05 07 09 11 13 15 17 19

21 23 25 272931 33 3537 39

41 43 45 47 49 5153 55 5759

61 63 6567 69 71 73 75 7779

81 83 85 8789 91 939597 99

第(3)句甲知道了那两个数,说明甲知道的积所有可能的因数分解结果之和只有一个在上面的25个数中。依次对上面25个数进行分解。

例如11

0209另:6+3=9,可以;

0308另:6+4=1012+2=14,可以;

0407另:14+2=16,可以;

0506另:15+2=30,否决;

例如17

0215另:6+5=11,否决;

0314另:21+2=23,否决;

0413另:26+2=28,可以;

0512另:20+3=23,否决;

0611另:33+2=35,否决;

0710另:35+2=37,否决;

0809另:24+3=27,否决。

第(4)句乙也知道了这两个数,说明乙知道的和只有一组分解结果构成的积满足(3)。

这样可以看出413满足要求。

 

【扩展】

当时通过程序验证1000以内只有这样一对数满足要求。

1000以外是否还所有这样的数对呢?

 

【结论】

这题目挺有意思,有点糊弄小学生似的
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值