欧拉问题:
如果我们列出所有 10 以下的自然数,它们是 3 或 5 的倍数,我们得到 3、5、6 和 9。这些倍数的和是 23。
求 1000 以下的所有 3 或 5 的倍数之和。
我试图从 projecteuler.net 解决第一个问题。我的代码如下:
int check = 3;
int result = 0;
for (int i = 1; i < 1000; i++)
{
if (i == check)
{
result += i;
check += 3;
}
}
check = 5;
for (int i = 1; i < 1000; i++)
{
if (i == check)
{
result += i;
check += 5;
}
}
Console.WriteLine(result);
Console.ReadKey();
我知道可以更好地优化它,但我的代码不起作用,我也不知道为什么。我用 10 个而不是 1000 个对其进行了测试,然后它就可以工作了。有人看到错误了吗?
编辑:我的代码确实有效,但我得到了错误的结果。当我在 for 循环中使用 i < 10 时,我得到了正确的结果
最佳答案
您的代码的问题是:
您检查一次从 1 到 1000 的数字,它们是 3 的倍数。接下来您还要检查从 1 到 1000 的数字,它们是 5 的倍数。
但是,您忘记了可以有多个数字同时是 3 和 5 的倍数(例如 15、30 等)的情况。
因此,您应该在单个循环中执行操作,而不是先检查 3 再检查 5。
喜欢:
int sum = 0;
for(int i=lower_limit;i<=upper_limit;i++){
if(i%3==0 || i%5==0)
sum = sum+i;
}
关于c# - 欧拉 1,代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40181520/