素数五个为一行的_素数跳棋游戏
触碰标题下面一行的“邵勇老师”查看所有文章;触碰“数学教学研究”, 关注本微信公众号(sx100sy)。本公众号内容均由邵勇( 北京 )本人独创,欢迎转发,但未经许可不能转载。每周推送两到三篇内容上有份量的数学文章,但在行文上力争做到深入浅出。几分钟便可读完,轻松学数学。 |
特别声明,本人未曾授权任何网站(包括微博)、公众号或其他什么号转载北京邵勇原创的“数学教学研究”公众号的内容。建议您一定直接关注本公众号(sx100sy),这样有什么问题可以留言交流和发消息,我会诚恳回复。未经授权而转载我文章的地方丢失了很多功能,比如留言,比如发消息到我后台。未经授权而转载我文章的地方,毕竟还存留着贯穿于我文章中的图片(比如公式),图片的右下角都有原公众号的水印“微信号:sx100sy”,通过在微信中搜索“sx100sy”,一定可以找到原始的公众号,也就是本公众号《数学教学研究》(sx100sy)并加以关注。本公众号才是良好的交流平台和文明的生态环境。
今天向您介绍一个小游戏,姑且叫其“素数跳棋游戏”,其规则如下:
(1)两人游戏。游戏在一张10×10的棋盘上进行,如下图所示。
上图棋盘中共有从1到100共100个连续正整数。画“〇”的都是合数,它们是按照埃拉托色尼筛法筛掉的100以内(含)的合数。剩下的未画“〇”的数,除1外,就都是素数了。用“〇”圈起来的合数仍然放在这里是为了数步数的方便。100以内共有25个素数:2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97。
(2)只有一枚棋子,两人轮流把这枚棋子从较小的素数往较大素数上移动。不能停放在合数上。注意:移动方向就像我们读横排书,从第一行开始从左读到右,到右端后转行继续读。其实是用眼睛看书,我注意观察过一个人的读书,他的眼珠在眼框中从右侧移动到左侧(从我的方向看),再回到右侧,然后继续“扫描”。
(3)轮到某人移子时,他不能不移,也不能倒着移,而是必须向素数变大的方向移动棋子。但移动步数不能超过5,比如把棋子从位置“2”移动到“3”或“5”或“7”都是可以的,把棋子从位置“5”移动两步到位置“7”也是可以的,但从位置“5”移动到位置“11”就不可以,因为位于“5”上的棋子要移动6步才能到达素数“11”的位置。
(4)谁先无法按规则移子谁算输。另一方就是赢方。
(5)开局先由两人中的一人(他就是先手)把这枚棋子放到距离“1”不超过5步的素数之上。
下面我们一起来玩一玩这个游戏。观察上图。第一次出现的连续5个或5个以上合数是在素数“23”之后,即24,25,26,27,28。于是,游戏在棋子走到“23”上面后便结束,因为不管下面该谁走棋,谁也没有能力跳过这五个连续素数。你若把棋子走到23上,你就赢了,因为对方无法按规则继续走棋了。
下面是纯逻辑推理。我们采用倒推法:
你若想获胜就要在轮到你走棋时你能够把棋子从前面某素数上移动至“23”上面。那么观察横盘,你只能把位于“19”上面棋子移动到“23”上面。而“19”上的棋子只能是从“17”移来,“17”位置上的棋子又只能是从“11”上面棋子移来,继续向前倒推,“11”上面的棋子是从“7”上面的棋子走来的。也就是说,从“7”以后的每一步走法都是唯一的。那么,你想最终获胜,你就必须抢占“23”号位,从而必须抢占“17”,“11”号位。所以,必须让对方只能把棋走到“7”号位上,那么唯一的办法就是你必须抢占“5”号位。“5”号位到“1”号位的距离是4步,不超过5步。所以,可以最终下结论,谁先手走棋,且把棋子摆到“5”号位上,那么,谁就必胜无疑,想输都输不了。直线推理,没有如果或分支。
上面的推理直接,简单。下面我们把规则做一个小小的修改:其他规则不变,只是可以移动的步数从5上升为7。那么,之前5步不能跨越的“23”这个障碍便可以突破了。下一个障碍在哪里?那么,我们再来玩一玩这个游戏,研究一下。
7步不能跨越的障碍是“连续7个或7个以上连续的合数”。这种情况在素数89之后出现:90,91,92,93,94,95,96(您可能会问91不是素数吗?对,它不是,91=7×13,不易看得出来)。这说明,想要获胜,必须抢占“89”号位。
同之前5步情况不同,这里会出现“选择”。我们具体来分析一下。“89”的前一步是“83”,唯一。“83”之前一步是“79”,也是唯一的。“79”之前一步为“73”,也是唯一的。所以,要最终抢占“89”号位,就必须抢占“79号位,这相当于让对方不得不把棋走到“73”号位。这就要求您必须抢占“71”号位(对方不可能把棋子从“71”号位跳到“79”号位上,因为有8步之遥,他只能跳到“73”位)。那么,你就要逼迫对方只能把棋子走到“67”号位。(“67”号位之后有“71”和“73”这一对孪生素数可以选择。选择权必须拿在自己手中,否则对方一但有权便可以选择抢占“71”号,那么对方就赢定了。)要让对方只能走到“67”号位,你就必须抢占“61”号位。继续往前倒推,你必须抢占“53”号位,必须抢占“43”号位。
所以,一定要让对方不得不走到“37”号位上,“37”号位之后是又一对孪生素数“41”和“43”,但这回你把“37”号位上的棋子移动到“43”号位上,把“41”号隔过去。然后再往前倒推。“37”之前的“31”是唯一的,“31”之前的“29”也是唯一的,“29”之前的“23”也是唯一的。那么,前面说了,把“37”留给对方,则你必须抢占“31”。从而之前必须抢占“23”。再往前倒推,如果你抢占到“13”号位,则对方不管把“13”号位上的棋子移动到孪生素“17”和19”中的哪一个,你都可以把“17”或“19”上的棋子移动到“23”号位上。“13”号位上的棋子是从“7”号或“11”号移来的,所以,你就必须逼近对方把棋子移动到“7”或“11”上,那么,你只有抢占“5”号位。与前面5步游戏一样也是抢占“5”号位。所以,你若先手,且把棋子放到素数“5”上面,是你可以稳操胜券。
下面我们应该从“5”号位开始玩一遍这个游戏,看一看是不是这样。
①你先手把棋子放到素数“5”之上,②对方把棋子移动到“7”或“11”,③然后您都是把棋子移动到“13”。④对方从“13”把棋子移到“17”或“19”,⑤你然后都是把棋子移动到“23”。接下来,⑥对方把棋子跳到“29”号位,⑦你把棋子跳动到“31”。⑧对方只能继续把棋子跳到“37”。⑨下面你的选择不能错,必须把“37”上面的棋子移动到“43”而不是“41”。⑩然后,对方只能把棋子移到“47”,⑾你也只能把棋子继续移到“53”,⑿然后对方是“59”,⒀你是“61”。⒁对方“67”。⒂你这时必须把棋子走到“71”而不是“73”。⒃对方只能走到“73”,⒄你于是走到“79”,⒅对方然后只能走到“83”,⒆最后,你就可以把棋子从“83”走到“89”。⒇对方走投无路,你于是大获全胜。
若把步数限制继续放宽,比如任意x步(x>7),那么,这个游戏是可以无限地玩下去呢?还是到达某个素数之后再也跨越不过去了而决出胜负?答案是:必定会在某一个地方结束。为什么?这是因为在正整数序列中,一定可以找到任意长度的一段连续数字,它们都是合数。这个任意长度的合数序列是可以构造出来的。具体可以阅读我之前的文章:《有关素数,这个事实很神奇!》。
前面重复出现的那个10×10横盘,是从我的另一篇文章借用的。那篇文章介绍了如何用埃拉托色尼筛法找出100以内全部素数。《埃拉托色尼筛法》。
素数五个为一行的_素数跳棋游戏相关推荐
- 素数五个为一行的_对标交流 ▏潍坊市心理咨询师协会名誉理事长、潍坊医学院王力教授一行到昌邑市妇幼保健院指导交流工作...
12月6日,潍坊市心理咨询师协会名誉理事长.潍坊医学院王力教授,中国心理学会首批注册心理督导师.济宁医学院刘娅俐教授,潍坊市心理咨询师协会副理事长魏玉华和副秘书长张呓飞一行来我院指导交流心理咨询与健康 ...
- 素数五个为一行的_4k+1型素数表为二平方和:拉格朗日方法
触碰标题下面一行的"邵勇老师"查看所有文章:触碰"数学教学研究", 关注本微信公众号(sx100sy).本公众号内容均由邵勇(北京)本人独创,欢迎转发,但未经许 ...
- Java黑皮书课后题第10章:*10.18(大素数)编写程序找出五个大于Long.Max_VALUE的素数
10.18(大素数)编写程序找出五个大于Long.Max_VALUE的素数 题目 破题 代码 运行结果 题目 10.18(大素数)编写程序找出五个大于Long.Max_VALUE的素数 破题 类似编程 ...
- 寻找孪生素数(当p为素数时,p+2也为素数)
数学家希尔伯特在1900年国际数学家大会的报告上提出一个"孪生素数猜想",即: 存在无穷多个素数p,使得p + 2是素数.p和p+2这一对差为2的素数,被称为"孪生素数& ...
- 要求统计给定整数M和N区间内素数的个数,并对所有素数求和。
题目内容: 要求统计给定整数M和N区间内素数的个数,并对所有素数求和. 其中两数必须满足条件: . 如果输入的M和N不能满足以上条件,则提示"输入数据错误". 输入格式: 在一行中 ...
- Java黑皮书课后题第10章:*10.6(显示素数)编写一个程序,然后按降序显示小于120的所有素数。使用StackOfIntegers类存储这些素数,获取之后按逆序显示它们
*10.6(显示素数) 题目 程序说明 代码 Test6.java Test6_StackOfIntegers.java 运行实例 题目 *10.6(显示素数)编写一个程序,然后按降序显示小于120的 ...
- Java黑皮书课后题第6章:**6.26(回文素数)回文素数是指一个数同时为素数和回文数。编程程序,显示前100个回文素数,每行显示10个数,数字中间用一个空格隔开
6.26(回文素数)回文素数是指一个数同时为素数和回文数.编程程序,显示前100个回文素数,每行显示10个数,数字中间用一个空格隔开 题目描述与运行示例 代码 题目描述与运行示例 6.26(回文素数) ...
- 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数
我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推. 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n ...
- 题目;我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推现在,给定两个整数n和m,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素
题目内容: 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推. 现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的 ...
最新文章
- 通过gdb core dump方法查看程序异常时的堆栈信息
- 经验 | OpenCV图像旋转的原理与技巧
- nohup不输出日志信息的方法,及linux重定向学习
- 注解配置声明式事务控制解析
- JOE is on TV! CodeForces - 1293B(数学)
- 常见的两大交换机硬故障
- java架构之路(多线程)synchronized详解以及锁的膨胀升级过程
- 强化学习 / 动态规划:策略改进(Policy Improvement)使策略更优的数学证明
- 用x360ce,北通蓝牙手柄成功玩双人成行
- linux进程cpu时间片,Linux性能监控之CPU篇
- 天价高端茶礼是真文化还是智商税?
- 深夜切题——Doubles
- 设备管理器的蓝牙设备卸载了,找不到蓝牙
- Android网页打开指定App
- 使用基本线条库进行码绘
- 数据人如何提高核心竞争力
- Golang 项目配置文件读取之 viper 实践
- 统计全年12个月数据
- CircleProgressBar 带载入动画的环形进度条
- 移动联通基站使用介绍
热门文章
- Docker安装 Mysql主从同步
- WINDOWS文本编辑器丨EmEditor功能简介
- 编程随笔-ElasticSearch知识导图(4):搜索
- arcgis导出的图片无效_关于ArcMap导出完整(高分辨率)的图片的问题
- ios html decode,IOS 中 urldecode 如何解码后,解码后“+”(加号)和空格处理方式
- 如何将html导入ie收藏,IE 如何导出和导入收藏夹(两种可行方法以IE9为例)
- 文字编辑器将网页添加到工具栏教程
- Win7删除任务栏右下角Win10推送升级图标
- 别告诉我你会用WORD
- linux vim emmet,vim插件--emmet-vim