c# - 欧拉 1,代码不起作用

标签 c#

欧拉问题:

如果我们列出所有 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/

相关文章:

c# - 输出名称时,Azure Blob 名称包含子文件夹

c# - ASP FileUpload InputStream 和 System.IO.File.OpenRead

c# - 捕获从未释放的 IDisposables

c# - Resharper:格式化 if 语句?

c# - 使用导航服务在页面之间进行动画转换

c# - 带有本地 SQL Server CE DLL 的 Entity Framework 代码优先 "ADO.NET provider not found"

c# - Linq 与 Lambda 等效于 SQL

c# - 解除阻止文件夹中的所有程序集文件

c# - 转换函数以确定从 C# 到 C++ 的运算符优先级

c# - log4net 不能在 Windows 服务中工作