
计算是在小学和初中阶段需要学习的重要知识和技能,而巧算体现了计算问题的思维精华,能让孩子初步体会思考的乐趣,同时,学习巧算也是提高计算正确率、锻炼数学思维、深入理解数学概念的好方法。
原复旦大学附属中学实验班数学名师、现百万粉丝教育博主、数学科普作者、视频号“胡小群讲数学“创始人胡小群老师的《巧算大学问》这本书借由15道经典、简单的巧算问题及15道相关拓展题,介绍了等差数列求和、等比数列求和、最值问题、和差问题等15种知识,展现了从特殊到一般、举一反三、逆向思维、数形结合、有序调整、换元法等思维方式,阐释了题目背后蕴藏的算理知识和数学思想。本书希望读者能摆脱生搬硬套、麻木记忆的学习方式,从简单的例子开始学透计算,一探巧算背后的大学问。
来源 | 《巧算大学问:15招通关速算》
作者 | 胡小群
文 | 【巧算之道,源于概念】
篇你知道“数学王子”高斯在年少时解答的著名数学题“1 + 2 + … + 100”吗?破解这道题的关键其实是“化加为乘”。就让我们从这道数学史上的经典题目,来看看巧算之道吧。
01
1 + 2 + … + 100 = ?
这可能是所有人都学过的一道经典巧算题目,很多同学甚至把答案都已经倒背如流了。但我想问的是:你是否还记得,当第一次看到它时,自己是如何进行思考的?还是说,只是老师告诉了你一个公式,你就开始套进去计算了?
我想,你恐怕不会一步到位地想到“首尾配对”或者“倒序相加”来求和,更不太可能直接想到转化为几何图形来解决——这可是神来之笔,很多老师都用这种方法来“炫技”。至于在脑袋里凭空而降一个等差数列的求和公式,那就更像天方夜谭了。
好,现在假设你第一次看到这个问题,让我带你探索一下它的巧算思路到底是怎么来的。
当看到一个数学问题时,我们首先要考虑面临的麻烦是什么。说实话,只要我们有愚公移山的精神,这道题是一定能做出来的,只是工作量太大了。因此,我们现在的麻烦就是:有太多的数要相加,而且这些数都不同,如果一个个从左往右加,每一步求和的结果又看不出明显的规律性——这个工作量是我们不愿意接受的。
那怎么提升我们的运算效率呢?因为我们现在使用的是十进制,所以有一种很自然的思路:有没有可能凑出整十、整百?如果行得通,那么我们的计算速度将大大提高,运算效率就会大幅提升,这就是小学老师常说的“找好朋友”的办法。
在加法运算中,你看到 1,可能就会想到 9;看到 2,可能就会想到8……于是,先不考虑 100 个数的和,至少前 10 个数的和我们可以算得快一些。这个数列的前 10 个数的和是:
(1 + 9) + (2 + 8) + (3 + 7) + (4 + 6) + 5 + 10 = 55
前 10 个数解决了,再看接下来的 10 个数。我们考虑 11 + 12 + … +20 的值,如果把其中每一项与前面 1 + 2 + … + 10 中的每一项按次序一一对应,那么每一组中的数正好都差 10,于是就有:
11 + 12 + … + 20 = 10 × 10 + (1 + 2 + … + 10) = 155
依此类推,我们就会得到:
1+ 2 + … + 100
= (1 + 2 + … + 10) + (11 + 12 + … + 20) + … +
(91 + 92 + … + 100)
= 55 + 155 + 255 + … + 955
= 5050
这个算法虽然不算太快,但至少比一个一个数从左到右相加要快一些,而且这个想法其实很自然。
我之所以从这个自然的算法讲起,是想提醒你:不要看不起“土办法”。在数学里,凡是自然的、能提升效率的想法,都是值得夸奖的。另外,我想顺便“考”你一下,你知不知道,我们能这么调整运算顺序,是因为什么?
是因为加法有交换律和结合律。
好,我们继续想想,这个算法还能不能再改进一下呢?有没有可能在这个基础上,再提升一下运算效率?比如,我们为什么不更大胆一些,不去凑十,而直接凑百呢?凑百的话,1 的“好朋友”是 99,2 的“好朋友”是 98……这样就有:
1 + 2 + … + 100
= (1 + 99) + (2 + 98) + … + (49 + 51) + 50 + 100
= 49 × 100 + 50 + 100
= 5050
这个算法显然比刚才又快了一些,真不错,我们又进步了一点儿。如果只是要计算 1 + 2 + … + 100 的话,我认为前面的算法已经很好了,对这道题目本身的研究也可以到此为止了。
但在数学上,我们往往会考虑解法的“一般性”——我们想到的方法能推广到更一般的问题吗?比如,当我们要计算的不是 1 + 2 + … + 100,而是 3 + 4 + … + 102 的话,刚才的算法还能用吗?倒也不是不可以,但工作量又变大了一些。如果题目变为 1 + 3 + 5 + … + 127 的话,那么我们又该怎么办呢?这会促使我们进一步思考,还有没有更好的算法。
让我们重新审视这个问题。既然这道题最根本的麻烦是有太多的数要相加,那么,我们曾经学过的哪种运算可以提升加法的运算效率呢?你想到了没有?
是乘法!乘法就是加法的简便运算,乘法的出现就是为了提升加法的运算效率的。

所以,如果你能理解我们为什么需要乘法,就会自然地去思考一个问题:既然乘法可以提升加法运算的效率,我们能否把这个加法的问题转化成乘法的问题呢?这就是解决这道题的一个关键思路:化加为乘。
让我们再接着想下去,如果要转成乘法的问题,我们又得问问自己:乘法是什么?乘法是连加同一个数的简便运算。只有同一个数的加法,才能转化为乘法。而现在,我们要相加的这 100 个数是各不相同的。于是,在解决问题的过程中,我们又碰到了一个新的问题:如何化不同为相同。
如何把 100 个不同的数的求和,转化成若干个相同的数的求和呢?想象一下,4 个人比赛,水平各不相同。单打独斗,一定是不“公平”的。只有先进行合理的分组,才有的比。你会怎么分呢?一定不会让第一名和第二名搭配在一起吧?我想,你会尝试让最强大的搭配最弱小的。所以,我们试着让 1 和 100 配,2 和 99 配……看看它们的和是否相等。
注意,这里其实是一种尝试,如果能直接“配对”成功,我们当然很高兴,但如果不成功,我们也可以继续思考比如每 3 个数一组的配对方法。
在刚才的尝试过程中,我想你应该已经发现问题被解决了。当我们把1 和 100 配成一组,2 和 99 配成一组……50 和 51 配成一组时,100 个数就被分成了 50 组,每一组的和都是 101。于是有:
1 + 2 + … + 100
= (1 + 100) + (2 + 99) + … + (50 + 51)
= 50 × 101
= 5050
看到这里,你有没有觉得,虽然你可能早就可以“秒杀”这道题,但从来都没真正理解过它?也许你早把等差数列的求和公式背得滚瓜烂熟,但别忘了,公式本身只是一个“器”。“倒序相加”“配对求和”这些方法实质上是为了凑出一个相同的数,这些方法可以被看成一种“术”。而真正的解决问题的思路,其实来自对乘法概念的深入理解,这才是这道题底层的解决之“道”。
没有哪个“器”和“术”可以脱离“道”而存在。在本书里,我会仅仅通过 15 个例子及其拓展题,就帮你理解巧算的各种“道”。
02
拓展题1:1 + 2 + … + 99 = ?
接下去,我们来思考一下,如果把题目改成 1 + 2 + … + 99,刚才的方法还有效吗?
你可能会说:“我已经知道 1 + 2 + … + 100 = 5050 了,那 1 + 2 + …+ 99 就 比 1 + 2 + … + 100 少 了 100 嘛。所以答案是 5050 - 100 =4950。”
非常好!如果你真是这么想的话,说明你至少初步掌握了化归的数学思想:把未知的问题化为已知的问题。
但为了把这个问题再“一般化”一些,我们可以再思考一下:如果没有计算过 1 + 2 + … + 100 的结果,我们会如何计算 1 + 2 + … + 99 呢?
把 1 + 2 + … + 100 的思路照搬过来,还行得通吗?试试看呗:让 1和 99 配对,2 和 98 配对……最后一组是什么?请你试着把最后一组写出来。
你有没有发现,这时我们碰到了一个小小的麻烦?
每 2 个数配对后的和是 100,所以最后一组应该是 49 和 51 配对。那 50 呢?对不起,50 好像没有人配,成了“孤家寡人”。这影响我们求和吗?
如果只要一个结果,那就不会影响,我们可以这样算:
1 + 2 + … + 99
= (1 + 99) + (2 + 98) + … + (49 + 51) + 50
= 49× 100 + 50
= 4950
但是,如果我们要的不只是这一道题的计算结果,那就好像还有一点点“不爽”的地方。偶数个数相加,我们能两两配对,全部配完;奇数个数相加,却会多出一个“孤家寡人”。那以后碰到这类问题,我们每次都要考虑有没有一个“孤家寡人”,这好像挺容易出错的。而且,当不知道项数是奇数还是偶数时,我们每次还要分类讨论一下吗?
既然麻烦出在奇数个数相加的情况里……要不,我们索性总是让偶数个数相加吧!怎么把奇数变成偶数呢?一个简单的想法是:奇数加 1就是偶数。但问题在于,偶数加 1 会变成奇数。这样一来,当不知道项数是奇数还是偶数时,如果要推出一个统一的公式,还是要分两种情况来讨论。
唉,还有什么办法能把奇数变成偶数,而偶数还是偶数呢?
既然加法不行,我们再回到偶数的定义试试。偶数就是能被 2 整除的数,如果没学过除法,你也可以把偶数看成 2 的倍数。

任何一个自然数在乘 2 以后,积可都是偶数呀!无论项数本来是奇数还是偶数,我们让式子中的每个数都加两次,项数不就一定是一个偶数了吗?这样算出的结果,再除以 2,就是原来应有的答案了。
比如,我们就可以这样求 1 + 2 + … + 99,记:
S = 1 + 2 + … + 98 + 99 (1)
再写一个:
S = 99 + 98 + … + 2 + 1 (2)
注意,为了配对成功,我们在(2)式中把(1)式中数的顺序故意倒过来写。这时把(1)式和(2)式一加,就有:
2S = 99 × (1 + 99)
于是
S = 99 × (1 + 99) ÷ 2
如果计算 1 + 2 + … + 100 的结果,我们同样可以记:
T = 1 + 2 + … + 99 + 100 (3)
再写一个:
T = 100 + 99 + … + 2 + 1 (43)
把(3)式和(4)式一加,就有:
2T = 100 × (1 + 100)
于是
T = 100 × (1 + 100) ÷ 2
你看,无论项数本来是奇数还是偶数,这样配对后的组数正好是原来数列中的项数。而且,无论本来是奇数个数相加还是偶数个数相加,我们都把问题的解决方案统一起来了。
推荐阅读

《巧算大学问:15招通关速算》
作者:胡小群
巧算藏智慧,巧算练思维,15题探秘数学大学问!巧算背后的经典思路和创新思考:从特殊到一般、从简单到复杂、从经典到拓展。
中小学生的数学开窍之旅;家长辅导必读。摆脱无效刷题和焦虑,提高学习效率。
数学家、中国科学院院士励建书,复旦大学数学科学学院陈文斌教授大力推荐!
2

被折叠的 条评论
为什么被折叠?



