gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 19:50:24 27 4
gpt4 key购买 nike

欧拉问题:

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com