Problem 1 : Multiples of 3 and 5
阿新 • • 發佈:2019-01-09
Multiples of 3 and 5
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.
Find the sum of all the multiples of 3 or 5 below 1000.
3的倍數和5的倍數
如果我們列出10以內所有3或5的倍數,我們將得到3、5、6和9,這些數的和是23。
求1000以內所有3或5的倍數的和。
題目解答
樸素解法:暴力列舉(需要考慮既能被3整除又能被5整除的數字只需要加一次,利用容斥原理可以解決這個問題)
優化演算法:
我們我們通過圖片可以觀察出 3和5所有重疊的數字都是是3和5的最小公倍數的倍數,也就是15的倍數,所以我們只需要將3的倍數和與5的倍數和相加並減去15的倍數和即可。
在這裡我們完全不必暴力列舉,利用等差數列求和公式即可解決這個問題:
等差數列求和公式推導:
我們可以通過數學歸納法再次進行證明,這裡就不多介紹了。
題目程式碼
#include <stdio.h> #include <inttypes.h> int32_t main() { int32_t sum_3 = (999 / 3) * (3 + (999/3) *3) / 2; int32_t sum_5 = (999 / 5) * (5 + (999/5) *5) / 2; int32_t sum_15 = (999 / 15) * (15 + (999 / 15) * 15) / 2; printf("%" PRId32 "\n",sum_3 + sum_5 - sum_15); return 0; }