从 1 到 的数字之和n is
n * (n + 1) / 2
1到1000之间能被3整除的数之和等于1到1000之间的数之和1000 / 3
,乘以 3。同样,1 到 1000 中能被 5 整除的数字之和与 1 到 1000 中的数字相同1000 / 5
,乘以 5。
我敢打赌你正在解决的问题希望你排除能被 15 整除的数字:)
edit— 为什么这有效?好吧,考虑一下从 1 到数字的更简单的情况n;比如说,1 到 100。
1, 2, 3, 4, 5, ... 97, 98, 99, 100
现在,考虑相同的数字列表,但倒退:
100, 99, 98, 97, ... 4, 3, 2, 1
请注意,当我们将这两个列表中的对相加时,我们总是得到 101:
100 + 1 is 101
99 + 2 is 101
98 + 3 is 101
...
4 + 97 is 101
3 + 98 is 101
2 + 99 is 101
1 + 100 is 101
所以总和都是 100,即 101。如果我们进行乘法并除以 2,我们就得到了答案:)
现在,能被 3 或 5 整除的数字之和又如何呢?好吧,如果你想一想,这些数字是什么样的?
3, 6, 9, 12, ... 993, 996, 999
嗯……看起来很像
3 * (1, 2, 3, 4, ... 331, 332, 333)
所以数字 1 到 333 的总和是333 * 334 / 2
,如果我们将其乘以 3,我们就得到 1 到 1000 之间可被 3 整除的数字之和。同样的情况也适用于 5。如果我们想去掉可同时被 3 和 5 整除的数字之和,我们可以计算从 1 到 的数字之和1000 / 15
and subtract从结果来看。
哦,还有一件事。如果我们讨论的是整数之和,我们怎么知道除以 2 的步骤不会留下分数呢?嗯,公式是n * (n + 1) / 2
, 记住。如果n
是奇数,那么n + 1
甚至。因此,该乘法将always涉及一个偶数,所以除以 2 永远不会留下分数!