龙空技术网

“从1加到100”的对话(一)

冯格拉底 197

前言:

现时同学们对“1加到100的算法”都比较珍视,看官们都想要剖析一些“1加到100的算法”的相关知识。那么小编也在网络上汇集了一些对于“1加到100的算法””的相关知识,希望各位老铁们能喜欢,各位老铁们一起来了解一下吧!

图1

父:你现在学习到了等差数列求和,现在和你说一下。

女:啥?等差数列求和,没学呢!

父:你现在做的这个题目就是啊!

女:哦。

父:首先说一个数学概念:数列。数列就是一组数,排列在一起,比如“1、2、3……”,这个是什么?

女:这个我知道,是自然数。

父:对,这个就是自然数列。你能举个其他的例子吗?

女:嗯,我想想。比如:2、4、6、8……,这个是偶数。

父:很好,这个是偶数列。数列里面有一个个的数字,我们把它叫做“项”,然后就有相关的概念,第一项叫首项,最后一项叫做尾项。我们用字母代替数字,就有一个数列的一般表达方式,a1、a2、a3……an、字母的下标的数字代表“第几项“。

女:明白,首项就是a1,尾项就是an

父:嗯,那么我们还回到自然数列来,你还记不记得小时候给你讲“1、2、3……100”,高斯小时候的故事。

女:嗯,记得。别的小朋友是一个一个地加,高斯用1+100,2+99,……,一共50组数,所以答案是5050.

图2

父:不错,你还记得。但是这是高斯的方法啊,不是你自己的方法。

女:那还有更快,更好的方法吗?

父:嗯,应该说你自己思考,会有更有意思的方法。

女:什么方法?

父:先看到这个题目,你想的是什么办法?

女:一个一个的加啊。

父:对,不要小看这种方法,起码是一个办法,比没有办法强!

女:我懒得算啊!

父:懒可要不得。一个懒字就错过很多精彩的东西。

女:是吗?

父:你看啊,我们先考虑第一个思路,从1加到100不管,我们先从1加到10可以不?这样是不是容易很多了?

女:还是要算啊!1+2=3,3+3=6,6+4=10,10+5=15,15+6=21,21+7=28,28+8=36,36+9=45,45+10=55.

父:嗯,不错,算得不慢。这样就是用最基本的方法做的。你有没有想过,以前我教给你的凑整的方法,比如2+8=10,3+7=10?这样是不是更容易算些

女:嗯,1+9=10,2+8=10,3+7=10,4+6=10,5,10,40+15=55;口算是好算一些。

父:这个思路能不能用在1+100呢?

女:我试试,1+99=100,2+98=100,……,49+51=100,剩下一个50和100,总共有50个100,答案是5050. 哈哈,比高斯的办法也不差啊,还容易口算。

父:是吧,这不就是你自己根据已经学过的东西,研究的自己的算法。你看1到10,答案是55. 那么11到20 与1加到10有什么关系,相加之和是多少呢?

女:嗯,11到20的每一个数比对应的1到10的每一个数大10,总共10个数字,所以11加到20,应该是100+55=155.

父:嗯,不错。你还可以用你已经掌握的凑整法计算一下。

女:我试试。11+19=30,12+18=30,13+17=30,14+16=30,剩下15和20,120+35=155;还是刚才的方法好。

父:嗯,你也发现了。这很重要,通过已知的运算结果会大大提高运算效率,这样你就计算的又快又好。那按照你的想法,21到30,31到40,直到91到100,每一组10个数字相加有什么规律

女:这个我明白了,后边一组十个数字之和都比前一组大100

父:那么如果都对比1到10呢?

女:11到20大100,21到30大200,31到40大300,41到50大400,51到60大500,61到70大600,71到80大700,81到90大800,91到100大900.

父:那你看,每一组都有55,一共有十组,而不一样就是100,200,……,900.而这又是1加到9,再扩大100倍

女:啊哈,我知道了,55*10=550,1加到9是45,再乘以100,是4500. 550+4500=5050.这样也能算出来啊。并且这里面套了一个1+9的方法。让我想想,这里面的结构有意思。

父:看,这样你又研究出了一种新的解法。然后,我们再回到最初想想。2=1+1,3=1+1+1,4=1+1+1+1,以此类推

女:这个没什么意义吗

父:是不是后面的数字都比前面的大1,这个就叫“前后项差相等”,所以简称“等差”?

女:是,然后呢?

父:你如果把他们写下来,如下图

图3

女:哦,这样就是一个三角形,求和就是求三角形的面积,有多少行,多少列?

父:哈哈,对,但是不能简单的当作是”面积“,你用三角形面积公式计算一下

女:高是10,底也是10,所以底乘高除以2,答案是50.为啥不一样?少了5。

父:如果用你上边凑整的办法,图形就变成这样。

图4

女:对,这样就补充成一个正方形了,这个正方形有10行,10列,所以总数是100.

父:是的,你也注意到了,红色部分和黑色部分不是相等的,因此不能直接除以2,红色部分最大的是9,而不是10. 可以在第9行来看,刨除最后一行就是9*10=90,一半就是45.

女:那能不能直接补充成红色和黑色一样呢?

父:当然可以,如图

图5

女:哦,这样就多了一行,变成了11行,所以是11*10=110 一半就是55. 啊哈!这如果用来计算1加到100,就是高斯的做法啊!

父:你明白啦,你原来是只考虑了数,没有考虑形状。这其实是让你进行”图形思考“,”可视化思考“,有些方法就会变得显而易见。你在看看这个图

图6

女:哦,我看出来了,这个就是先计算1到10,以后的每组10个数都比前一组大100,多出的部分又组成了100到900的运算.

父:没错,关于自然数列求和你就明白了原理和方法,我帮你总结一下:

暴力法——不管那么多,我就闷头算凑整法——口算经常用到由小到大,分析差别——先算1~10,比较差别 “高斯法”,首尾相加图形可视化法

你悉心体会,还有更多的办法。

女:确实啊,以前没有想过这么多。

父:以后勤于思考,不要局限于题目的答案上,不要因现成的方法局限自己的思路。这很重要。而且一些问题深入思考以后,你会发现很有意思。

女:嗯,是有意思,比写作业有意思。

父:现在我们把这个方法推广至一般情况,我们把自然数列写成(1,2,3 ……n),

女:啥叫一般情况?不都算出来了吗,为啥还推广。

父:这个是一个极为重要的思想,先做出一个特殊情况的结果,然后不断把条件放宽,让这个结果可以在更大范围有作用。一方面是让我们手上的武器在处理问题时更强劲,另一方面加深我们对事物规律的认知。自然数列是最简单的等差数列,我们先把这个方法推广到任意自然数列求和,然后再推广到任意等差数列求和。

女:嗯,好像越来越复杂了。

父:我们把n项数列和命名为Sn.尝试计算一下这个数值。

女:Sn=1+2+3+……+n. 别说,让我来算下。把这个三角形反过来,两个凑一个长方形,

边长分别就是n和(n+1),然后除以2.所以

Sn=n(n+1)/2

父:很漂亮,推导出公式了。这就是高斯方法的代数表达式。你可以验证一下,从1加到10,从1加到100.

女:哈哈,一般一般。我还是有聪明才智的啦!把n=10带入,S10=10*11/2=55,

父:正确!你没发现,如果有了这个公式,你在计算起来快多了?

女:确实,确实。我再算一下1加到100,S100=100*101/2=5050.哈哈,Doublekill!

父:有了这个一般公式,无论多大的数字,你都可以计算了,并且速度非常快。比如说,从1加到1000.

女:我算算,S1000=1000*1001/2=5000500,厉害啦,我的爹!

父:你还可以计算更大的数字,再也不用一个一个算啦。我们再进一步,我想知道51到100的和,怎么计算?

女:交给我,嗯,通过公式我能算出S100,我也能算出S50,S50~100=S100-S50=100*101/2-50*51/2=50*101-25*51=25*(202-51)=3775

父:不错,不错。你已经学会灵活使用这个公式了。向深入思考还有更多有意思的事情……

(未完待续)

标签: #1加到100的算法