题目如下:

有两个大于1小于100的自然数x,y,老师告诉小明两个数的和,告诉小强两个数的积。已知小明和小强足够聪明。

下面是两个人的对话:

小强:我不知道这两个数是多少。(<沉默中>...)
小明:我知道你不知道。(我不知道这两个数是多少,而且你也不知道。)
小强:那我知道了。(你说的对,不过我现在知道了。)
小明:那我也知道啦。(额...那我也知道啦。)

问这两个数是多少?

PS:个人觉得对话改成小括号里面的也是一样的,对解题逻辑没有影响。

下面是我们的逻辑链条:

step1  "小强:我不知道这两个数是多少。"

常理来说,只给两个自然数x,y之积,小强有很大概率不知道这两个数是多少。但也有一些情况小强会知道,比方说这个积是21(只能分解为两个素数,那么这两个数只能是3和7);或者是25(这两个数只能是5和5);或者是27(这两个数只能是3和9)。换句话说,老师给小强的这个积x*y至少有3个素因子,且这三个素因子不全相同。

step2  “小明:我知道你不知道。”

    小明说的这句话就比较有意思啦。为什么小明就那么笃定小强一定不知道这两个数是多少呢?下面我们来一一分析:
    就是因为x*y至少有三个不全相同的素因子,小强才不知道这两个数x和y。

   小明敢如此笃定,一定是他知道的信息没有给小强推断出来这两个数的任何可能性。也即他知道x+y后,能判断出x和y没有都是素数的可能性,也没有一个是素数,另一个是这个素数的平方的可能性

根据1+1猜想(好像还没有完全证明):即任意一个大于2的偶数都可以表示为两个素数的和。

(当然,有些奇数也可以表示为两个素数的和,比如13可以表示为2和11)

我们可以推知小明拿到的和x+y不可能是偶数 。(如果是的话,那么这两个数有可能都是素数,小强也就不敢那么笃定了)

这样就完了吗?显然不。
           也就是说这两个数的和x+y是奇数就能保证这两个数不能同时是素数了吗,别忘了有个比较特殊的自然数2(既是偶数又是素数)。那么x+y是奇数,x+y-2还是奇数,且x+y-2是个奇合数(杜绝了一个是2,另一个是3,5,7,11,13这种可能性)

除此之外,不要忘记了,x+y不能一个是某个素数,另一个是此素数的平方。

至此,我们最好把x+y的可能性在1到200之内遍历一下 :

1到100+2之内(x+y-2是个奇合数):

11   17   23  27  29   35  37  41   47  51  53  57 59   65  67  71   77 79  83  87  89   95  97 101

103到200之内的所有奇数也都满足(这个时候不会有2来参合了)

step3  “小强:那我知道啦”

首先我们要明确的一点:小强知道了,但并不代表我们知道了。

小强知道一偶一奇的时候已经知道这两个数了,那么x*y为三个因子,其中一个为2,另外两个也为质数且相同。

也即是,小强手里的x*y的三个因子有两种可能,假设n为质数且n不等于2

其一:三个因子分别为:2,2,n

若x=4,y=n,奇偶,

若x=2,y=2n,同为偶

奇偶唯一,成立

其二:2,n,n,(n>=3)

若x=2n,y=n,奇偶

若x=2,y=n^2,奇偶(质数的平方仍为奇数)

X、Y奇偶不唯一,不成立

所以小强手里的x*y的三个因子必定为2,2,n类型且其中一个数为4

小强知道x*y,进而可以求出x、y。

step4 小明:那我也知道啦。

小明知道了x*y为三个因子,其中两个为2,另外一个为质数。

并为2,2,n类型,同时x、y中一个为4。

结合x+y,进而求出另外一个数。

一个有意思的逻辑训练题目相关推荐

  1. python有趣代码-一个有意思的 Python 训练项目集

    逛 GitHub 的时候,发现了一个很酷的 Python 训练项目集.一共有 25 个题目,基本涵盖了用 Python 实现的各种功能. 上一周没有复习 C++ 和网络通信全部用来玩这几个题了.题目地 ...

  2. 【Python】简单的逻辑训练题目(计算机二级练习题)

    目录 第一题 第二题 第三题 第四题 第一题 x=10 while x:x-=1if x%2:print(x,end='')else:pass 用到的知识: end = ' '的意思是取消换行. %符 ...

  3. 几个常见的逻辑训练及参考答案

    几个常见的逻辑训练 假设有一个池塘,里面有无穷多的水.现有2个空水壶,容积分别为5升和6升.问题是如何只用这2个水壶从池塘里取得3升的水. 参考:第一次先用6升的壶盛满水倒入5升的壶中,剩余1升水,倒 ...

  4. js之一个有意思的逻辑题

    js之一个有意思的逻辑题 昨天偶然看见一个技术群里面在讨论一道js的逻辑题,很快就有人给出答案来了,但是我却想了半天,这里之所以记载,不是单纯的记录一种答案,而是多种,废话不多说,直接上题目 定义一个 ...

  5. 思维训练让你更高、更强 |【逻辑思维能力】「刷题训练笔记」假设法模式逻辑训练题(6-8)

    每日一刷 思维训练让你更高.更强! 题目6 一句问路的话 一个人站在岔道口,分别通向A国和B国,这两个国家的人非常奇怪,A国的人总是说实话,B国的人总是说谎话.路口站着一个A国人和一个B国人:甲和乙, ...

  6. java学习之编程逻辑训练

    java学习之编程逻辑训练 案例1:买飞机票 分析 需要输入的变量:季节(旺季/淡季可以与后面的月份合并),舱位(经济舱/头等舱,字符串类型),机票原价(应该是浮点型),月份(整型) 定义方法录入机票 ...

  7. 发现一个有意思的博主(科研工作者)

    科学网  这个社区好像都是大学老师? 发现一个有意思的博主,王立新的博客: http://blog.sciencenet.cn/u/fuzzywanglixin 博主写的文章有点意思啊,感觉很是犀利. ...

  8. 荣耀v9系统升级 服务器,荣耀V9首次系统升级 带来一个有意思的新功能

    原标题:荣耀V9首次系统升级 带来一个有意思的新功能 近日,刚刚上市半个月的安卓旗舰新机荣耀V9迎来了首次系统升级,新的固件版本号为"B113".这次更新带来了"3D创意 ...

  9. 一个没暂时没有办法实现的问题和一个有意思的小问题!

    1.暂时没有实现的问题: Calendar 控件的自定义Cell里的内容.我想在每个日期上加一个类似Linkbutton的控件,可是无论怎样做,所有的事件都是无法添加上去的.因为这个控件是动态生成的, ...

最新文章

  1. python C++ 求逆矩阵库
  2. ajax校验用户名可用吗,基于jQuery实现Ajax验证用户名是否可用实例
  3. LeetCode Range Addition II
  4. Error: ENOSPC: System limit for number of file watchers reached, watch'所在文件路径'
  5. java的两种运行方式Applet和Application你真的懂吗
  6. 六、Analysis of quicksort
  7. 【转】CMake Error: The current CMakeCache.txt directory CMakeCache.txt is different than the directory
  8. C语言课后习题(30)
  9. javascript的getElementByTagName
  10. 小米cc9出厂线刷包_小米cc9 pro刷机教程,线刷升级更新官方系统包
  11. 华为C语言的编程规范
  12. 淘客该怎么做,淘客+又是什么
  13. 【python爬虫自学笔记】-----爬取简书网站首页文章标题与链接
  14. 海康机器人工业相机sdk简介
  15. oracle 数据分列,oracle怎么按照范围分列!求高手帮忙.
  16. 湖南第一师范学校有计算机系吗,湖南第一师范学院有哪些专业及什么专业好
  17. 织梦dedecmsTAG出现404页面的解决办法
  18. libxml2的安装和使用
  19. 北斗再入试题,北京中考物理实验【探究题】占比过半 方格教育
  20. prism DelegateCommand的使用

热门文章

  1. linux系统下网卡故障解决
  2. 软件需求开发的18般武艺
  3. 同事把实数作为 HashMap 的key,领导发飙了...
  4. 美团五大最受欢迎的开源项目!
  5. 总结三种 MySQL 大表优化方案
  6. 因用了Insert into select语句,同事被开除了!
  7. 看完弄懂,明年至少加 5K
  8. 敏捷开发中如何定义“完成”?
  9. 「测评系列之少数派」打通 IM 和日历,飞书重新定义文档
  10. Scrum中文网-是否需要在Sprint计划会上分完所有任务?