添加3和5的倍数的所有自然数:以下代码中的错误是什么

时间:2009-09-03 13:29:44

标签: c#

我知道这可以通过使用

轻松完成
if(i%5 == 0 OR i%3 ==0) sum+=i;

但是下面的C#代码有什么问题:

    int sum = 0;
    for(int i = 0, j = 0; i < 1000; i+=3, j+=5)
    {
        Console.WriteLine("i = " + i);
        Console.WriteLine("j = " + j);

        sum += i;

        Console.WriteLine("Sum after adding i  = " + sum);

        if(j < 995 && j % 3 != 0)
        {
            sum += j;
        }

        Console.WriteLine("Sum after adding j  = " + sum);

    }

5 个答案:

答案 0 :(得分:5)

声明j < 995应该是j <= 995,否则你不会在你的总和中添加995。

答案 1 :(得分:1)

明显的错误是995是5的倍数,不会被添加,而996和999是3的倍数将被添加:循环条件中的1000和if条件中的995应该是相同的数字。

答案 2 :(得分:1)

另外,如果你想将所有这些自然数小于1000的总和加起来,为什么排除995呢?你可以把

j <= 995 && j%3!=0

答案 3 :(得分:0)

这可能只是一个挑剔,但仍然:“全部”和“低于1,000”不是同一组自然数,你可能想要改变一些东西。

答案 4 :(得分:0)

for(int i = 0, j = 0; i < 15; i+=3, j+=5)

将此更改为

for(int i = 0, j = 0; i <= 15; i+=3, j+=5)

使用<=(大于或等于运算符)

并且有效