231
简单直接的计算:
最朴素的方法就是把从 1 到 21 的所有数字一个一个加起来:
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 = 231
这种方法简单易懂,但如果数字范围很大,就会变得非常耗时。
高斯的故事与等差数列求和公式:
传说数学家高斯小时候被老师布置了类似的作业,但他没有按部就班地加,而是发现了一个巧妙的规律。他注意到:
- 1 + 21 = 22
- 2 + 20 = 22
- 3 + 19 = 22
- …
- 10 + 12 = 22
- 11 本身
他将这些配对的数字加起来,发现可以得到 10 个 22,再加上中间的 11,所以结果是 10 * 22 + 11 = 220 + 11 = 231。
高斯的方法实际上利用了等差数列求和的原理。 从 1 到 21 的数字构成一个等差数列,首项 a1 = 1,末项 an = 21,项数 n = 21。等差数列求和公式为:
S = n * (a1 + an) / 2
将数字代入公式:
S = 21 * (1 + 21) / 2 = 21 * 22 / 2 = 21 * 11 = 231
Python 代码实现:
如果你是一位程序员,也可以用代码轻松计算:
“`python
sum = 0
for i in range(1, 22): # 注意:range 函数不包含结束值,所以要到 22
sum += i
print(sum) # 输出 231
或者更简洁:
print(sum(range(1, 22))) # 使用 Python 内置的 sum 函数
或者用列表生成式:
print(sum([x for x in range(1, 22)]))
甚至用数学公式:
n = 21
print(n * (n + 1) // 2) # // 是整除运算符
“`
这些代码片段都能够输出正确答案 231。
数学归纳法验证 (扩展阅读,非必须):
虽然有点过度使用,但我们也可以用数学归纳法来证明等差数列求和公式的正确性,从而验证我们的答案。
-
基础情况: 当 n = 1 时, 1 = 1 * (1 + 1) / 2 = 1, 公式成立。
-
归纳假设: 假设当 n = k 时, 1 + 2 + … + k = k * (k + 1) / 2 成立。
-
归纳步骤: 我们要证明当 n = k + 1 时, 1 + 2 + … + k + (k + 1) = (k + 1) * (k + 2) / 2 成立。
从等式左边出发:
1 + 2 + … + k + (k + 1) = k * (k + 1) / 2 + (k + 1) (根据归纳假设)
= [k * (k + 1) + 2 * (k + 1)] / 2
= (k + 1) * (k + 2) / 2
这正是等式右边。
因此,根据数学归纳法,对于任何正整数 n,公式 1 + 2 + … + n = n * (n + 1) / 2 都成立。 当我们取 n=21时,答案依然是231.
总结:
无论是用直接相加、高斯的巧妙方法、等差数列求和公式,还是编程计算,从 1 加到 21 的结果都是 231。 不同的方法展示了解决同一个问题的多种思路,也体现了数学的魅力。