C ++求和3和5的倍数

时间:2014-07-07 03:32:30

标签: c++

我刚刚开始C ++编程三天了,我无法弄清楚如何完成这个练习。基本上,我想将所有3和5的倍数加在1000以下。这是我的代码:

int sum3n5(int max){

    int sum = 0;

    for(int i = 1; i <= max; ++i){

        if( i%3 == 0 && i%5 == 0 ) { sum += i;}

        else if( i%3 == 0 || i%5 == 0 ) { sum +=i;} 

    return sum;       

    };    
};

很抱歉,如果这是一个微不足道的错误,我没有意识到。 运行之后我总是得到结果0。

2 个答案:

答案 0 :(得分:3)

int sum3n5(int max){

    int sum = 0;

    for (int i = 1; i <= max; ++i){

        if( i % 3 == 0 || i % 5 == 0 ){
            sum += i;
        }

    }

    return sum;       
}

您只需要||(逻辑或)运算符,而不是&&(当然不是两者!)。 <{1}}需要在 for循环之后,以便循环可以在函数返回之前完成。

答案 1 :(得分:1)

没有循环的版本:

int sum3n5(int max)
{
    return 3 * (max / 3) * (max / 3 + 1) / 2
        + 5 * (max / 5) * (max / 5 + 1) / 2
        - 15 * (max / 15) * (max / 15 + 1) / 2;
}

它使用了1 + 2 + .. + n == n * (n + 1) / 2

这一事实