欧几里得游戏解析实现

本文探讨了一个基于数字倍数的游戏,通过分析发现获胜策略与最大公约数相关。欧几里得算法用于计算最大公约数,采用辗转相除法。游戏胜负取决于地板上数字个数的奇偶性,这可以通过计算最大公约数和最大值来确定。文章最后给出了游戏的代码实现思路。
摘要由CSDN通过智能技术生成

       

首先我们可以写出两个数字来找出规律

第一例: 地板上的数字14  2   游戏结束之后 地板上的数字是:14 12 10 8 6 4 2  这7个数字   这时先写的就会赢

第二例: 地板上的数字为7  5 游戏结束之后 地板上会出现的数字是:7 2 5 3 1 6 4 一共7个数字  这时 先写就会赢

第三例 :  地板上的数字为18 45  游戏结束之后 地板上会出现的数字是:18  45  27  9  36  一共5个数字   这时先写就会赢

........

不知大家有没有发现,地板上出现的数字都是中间某个数的倍数  

第一例:地板上的数都是2的倍数

第二例:地板上的数字都是 1的倍数

第三例:地板上的数字都是9的倍数

再来看一下倍数的基数和原始在地板上的数字的关系:

第一例    14  2   2      个数 7 =14/2

第二例    7   5   1        个数 7=7/1

第三例   18  45  9       个数 5=45/9

可以发现这个倍数的基数就是原始数的最大公倍数  出现在地板上的个数就是地板上的最大值除以他的最大公约数 

欧几里得算法就是专门解决最大公约数的算法的;欧几里得是采用的是辗转相除法:原理如下

如果:a=6 b=4

gcd(a,b)=gcd(b,a%b)【%相当于mod 取余函数】一直到gcd(x,0);那么这两个数的最大公约数就为x

gcd(6,4)=gcd(4,2)=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值