在使用数组解决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();
}
}
答案 0 :(得分:3)
让我们“运行”您的代码:
总结,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