【数学-算法】1加到100的有趣算法

今天备考软件设计师,遇到个公式1+2+3+..+n=n(n+1)/2,居然一时卡壳无法证明。

我们先看看令高斯闻名世界的小学数学题,1+2+3+...+98+99+100=?

 

算法1: 逐个累加。

算法2:逐对的首尾相加: (1+100)+(2+99)+(3+98)+...+(50+51) ,总共有 50对101,就是50*101=5050。

算法3:创造出一个相反的计算式 100+99+98+...+3+2+1,它与1+2+3+...+99+100的结果是相同的,两个式子一一对应相加,总共是100个101,就是100*101,然后再除2,就是100*101/2 = 5050。

 

这三个算法,显然第三个更直观更清晰。让我感到惊奇的是它的创造性,它没有直接去求解问题,而是创造性的提出一个新问题,然后利用这个多余的新问题与题目之间的独特关系,从而简化了原问题的求解。不得不说,真的不是一般没有受过数学训练的人能想到的。

我们再用算法2和3去推导公式:1+2+3+..+n=n(n+1)/2。

 

算法2:

n为偶数时,逐对进行首尾相加,刚好有n/2对,每对的和是n+1,二者相乘就是和:(n+1)n/2。

比如:1+2+3+4。

 

n为奇数时,这时有2种方法。

方法1:先累加前n-1,即先计算:1+2+3+..+n-1,套用偶数的公式,结果前n-1项的和是 n(n-1)/2,然后再加上n,就是 n+n(n-1)/2 = n(n+1)/2。

方法2:逐对进行首尾相加,会有(n-1)/2对,每对的和是n+1,但中间剩下个单项,是 (n+1)/2,两个部分加起来,就是:(n+1)(n-1)/2 + (n+1)/2 = (n+1)n/2。

比如:1+2+3+4+5。

 

算法3(清晰易懂):

要求1+2+3+...+(n-1)+n

构造n+(n-1)+...+3+2+1

二者上下对应相加,得到:

(n+1)+(n+1)+...+(n+1)+(n+1)+(n+1)

容易看出,是n个n+1相加,即 n*(n+1)

因构造的算式与要求的算式值相等,所以刚才的结果除2,即 n(n+1)/2 为最终结果。

看完算法3是不是感觉眼前一亮,非常清晰。

 

不得不感慨:数学真的是精妙!
 

 

写于湖北省图,2019.10.26

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qilei2010

送我一张彩票中了平分

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值