C# ProjectEuler Q1程序意外结果

C# ProjectEuler Q1程序意外结果,c#,C#,我在做第一道题,我原来的程序是这样的 int multiplesof=1000,count=0, multiple1 = 3, multiple2 = 5,val1,val2,sum=0; while (count < multiplesof) { if (count % multiple1 == 0) sum = sum += count; if (count % multiple2 == 0) sum = sum += count;

我在做第一道题,我原来的程序是这样的

int multiplesof=1000,count=0, multiple1 = 3, multiple2 = 5,val1,val2,sum=0;

while (count < multiplesof)
{
    if (count % multiple1 == 0)
        sum = sum += count;
    if (count % multiple2 == 0)
        sum = sum += count;
    count++;
}
Console.Out.WriteLine(sum + " is the sum of all multiples");
Console.In.ReadLine();
int multiplesof=1000,count=0,multiple1=3,multiple2=5,val1,val2,sum=0;
while(计数<倍数)
{
如果(计数%multiple1==0)
总和=总和+=计数;
如果(计数%multiple2==0)
总和=总和+=计数;
计数++;
}
Console.Out.WriteLine(sum+“是所有倍数的总和”);
Console.In.ReadLine();
它给了我266333的解。这被证明是错误的,我看了看谷歌后感到困惑。此后,我通过以下循环获得了233168的正确值。然而,在我看来,他们做的事情完全一样。有人能解释一下为什么他们会提出不同的答案吗

while (count < multiplesof)
{
    if (count % multiple1 == 0 || count % multiple2 == 0)
        sum = sum += count;
    count++;               
}
while(计数
因为如果它是3和5的倍数,则添加了两次,就像它是15时一样

另一种解决方案,如果您打算自己解决,还可以使用扰流板:

int result=3*(999/3*(999/3+1)/2)+5*(999/5*(999/5+1)/2)-15*(999/15*(999/15+1)/2


因为如果它是3和5的倍数,你加了两次,就像它是15的时候

另一种解决方案,如果您打算自己解决,还可以使用扰流板:

int result=3*(999/3*(999/3+1)/2)+5*(999/5*(999/5+1)/2)-15*(999/15*(999/15+1)/2


想想那些可以被3和5整除的数字,比如15。第一次尝试计数两次。

想想可以被3和5整除的数字,比如15。您的第一次尝试计数两次。

您下面的代码是正确的。试试看……也不需要
sum=sum+=count<代码>+=
已经表示添加和分配。只需使用
sum+=count也不需要那么多的代码行:
可枚举的.Range(11000-1)。其中(x=>(x%3)==0 | |(x%5)==0)。Sum()
@SargeBorsch也不需要linq,它有一个封闭形式的解决方案-即不需要循环。@NikoDraškovićOK,但它需要一点思考。:)下面的代码是正确的。尝试一下……也不需要
sum=sum+=计数<代码>+=
已经表示添加和分配。只需使用
sum+=count也不需要那么多的代码行:
可枚举的.Range(11000-1)。其中(x=>(x%3)==0 | |(x%5)==0)。Sum()
@SargeBorsch也不需要linq,它有一个封闭形式的解决方案-即不需要循环。@NikoDraškovićOK,但它需要一点思考。:)