韩信点兵python程序_韩信点兵计算公式与代码

韩信点兵计算公式与代码

问题描述:

淮安民间传说着一则故事——“韩信点兵”,其次有成语“韩信点兵,多多益善”。

韩信带1500名兵士打仗,战死四五百人,站3人一排,多出2人;站5人一排,多出4人;站7人一排,多出6人。韩信很快说出人数:1049。

问题重述:

上述问题使用数学语言其实可以描述如下:

假设一个数为X,则1000

X%3 = 2

X%5 = 4

X%7 = 6

让求X。

问题解法:

其实韩信点兵问题,在古代已经有了解法。《孙子算经》有几句乘法口诀:三人同行七十稀, 五树梅花廿一枝, 七子团圆正半月, 除百零五便得知。

这句话的意思就是用被除数是3的余数(2)与70相乘,被除数是5的余数(4)与21相乘,被除数是7的余数(6)与15相乘,最后如果没在范围之内,就加减若干次105就可以得到答案。

所以算法是这样的:2*70+4*21+6*15=314人

314+105+105+105+105+105+105+105=1049人。

其中105是三个被除数的公倍数,即3*5*7=105,那么70,21,15是怎么来的呢?

现代人们解决这个问题用的是中国剩余定理。定理内容可以上网看到,这里不再多说,直接上公式。

上面算式

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值