1. 程式人生 > >Project-Euler-001

Project-Euler-001

尤拉計劃裡面都是一些數學題,可以通過程式設計來解決它,只需要輸入最後的結果即可。從簡單到容易,一點一點做,加油!

001題:

題意:

​ 如果我們列出10以內所有3或5的倍數,我們將得到3、5、6和9,這些數的和是23。

​ 求1000以內(不包括1000)所有3或5的倍數的和

思路:

​ 有兩個:1.用暴力的方法遍歷從1~999,只要是3或5的倍數就累加

​ 2.利用容斥原理,用3的倍數的和 + 5的倍數的和 - 15的倍數的和

程式碼:

#include <stdio.h>
int main () {
    int num3 = 999 / 3;	//求出1000以內3的倍數的個數
    int num5 = 999 / 5;	//求出1000以內5的倍數的個數
    int num15 = 999 / 15;	//求出1000以內15的倍數的個數
    //求出1000以內3的倍數的數的累加和
    int ans3 = (1 + num3) * num3 / 2 * 3;	
    //求出1000以內5的倍數的數的累加和
    int ans5 = (1 + num5) * num5 / 2 * 5;
    //求出1000以內15的倍數的數的累加和
    int ans15 = (1 + num15) * num15 / 2 * 15;
    //通過容斥原理求得結果為233168
    printf ("%d\n", ans3 + ans5 - ans15);
    return 0;
}

​ Over~

如果有寫的不對或者不全面的地方 可通過主頁的聯絡方式進行指正,謝謝!