测试是对的,但答案仍然是错误的

时间:2015-08-13 12:30:35

标签: c#

在使用数组解决C#中的Euler问题1的拙劣尝试之后,我被指向仅在满足for()循环的条件时使用单个变量。代码只是更好,但我看不出我做错了什么。

目标是获取前1000个数字,找到3 OR 5的因子,最后将这些因子加起来。我正在做前10个,我知道在尝试完整的1000之前是23个。控制台读取完美,直到for()循环结束,然后我在最后答案时要求代码,但是它给出了我33岁!如何在循环后代码向sum变量添加任何内容!它嘲弄我...

using System;

public class Problem1
{
    public static void Main()
    {
        int sum = 0;

        //assign range to evaluate factors and summation
        int maxNumber = 10;

        //test if i is a factor of 5 or 3
        for(int i = 1; i <= maxNumber; i++)
        {
            if (i % 3 == 0 || i % 5 == 0)
            {
                //WriteLine here to debug, the real magic here is adding i to sum when test is true
                Console.WriteLine(sum);
                sum += i;
            }
        }

        //and the final answer is?
        Console.WriteLine(sum);

        //uncomment below line if running in vbs
        Console.ReadLine();
    }
}

2 个答案:

答案 0 :(得分:3)

让我们“运行”您的代码:

  • 1?继续
  • 2?继续
  • 3?添加
  • 4?继续
  • 5?添加
  • 6?添加
  • 7?继续
  • 8?继续
  • 9?添加
  • 10?添加

总结,10,9,6,5和3是33。

答案 1 :(得分:1)

因为还计算了maxNumber

改变这个:

for(int i = 1; i <= maxNumber; i++) // i=3,5,6,9,10 => sum = 33

对此:

for (int i = 1; i < maxNumber; i++) // i=3,5,6,9  => sum = 23