Project Euler

谜题   0001

3 或 5 的倍数

Project Euler · 第 1 题

10 以下的自然数中,3 或 5 的倍数是 3,5,6,9,它们的和是 23

求 1000 以下所有 3 或 5 的倍数之和。

普通循环当然可以完成。更有趣的问法是:如何完全去掉循环?

提示

每次打开一个

分别计算 3 的倍数和 5 的倍数之和。

修正被重复计数的项。

解答

认真尝试后再打开

等差数列与容斥原理

N 以下所有 k 的正倍数之和为

km(m+1)2,m=N1k.

加上 3 的倍数和 5 的倍数,再减去被重复计算的 15 的倍数:

33333342+519920021566672=233168.

这道小题带来一个耐用习惯:在直接相加计数或求和之前,先明确地找出重叠部分。