我正在解决第一个问题,我的原始程序看起来像这样
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();
它给了我266333的解决方案。事实证明这是错误的,我看着谷歌。我已经通过以下循环得到了正确的值233168。但对我来说,他们看起来完全一样。有谁能解释为什么他们会提出不同的答案?
while (count < multiplesof)
{
if (count % multiple1 == 0 || count % multiple2 == 0)
sum = sum += count;
count++;
}
答案 0 :(得分:5)
因为你加了两次,如果它是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);
答案 1 :(得分:0)
考虑可被3和5整除的数字,例如15.您的第一次尝试将它们计算两次。