Find the sum of all the multiples of 3 or 5 below 1000

前端 未结 16 1002
时光说笑
时光说笑 2020-12-10 16:41

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. I have the following code but the answer do

16条回答
  •  渐次进展
    2020-12-10 17:13

    Using the stepping approach, you can make a version:

    #include 
    
    int main ( void ) {
    
        int sum = 0;
    
        for (int i = 0; i < 1000; i += 5) {
            sum += i;
        }
        for (int i = 0; i < 1000; i += 3) {
            if (i % 5) sum += i;  /* already counted */
        }
        printf("%d\n", sum);
        return 0;
    }
    

    which does a whole lot fewer modulo computations.

    In fact, with a counter, you can make a version with none:

    #include 
    
    int main ( void ) {
    
        int sum = 0;
        int cnt = 6;
    
        for (int i = 0; i < 1000; i += 5) {
            sum += i;
        }
        for (int i = 0; i < 1000; i += 3) {
            if (--cnt == 0) cnt = 5;
            else sum += i;
        }
        printf("%d\n", sum);
        return 0;
    }
    

提交回复
热议问题