添加3和5的倍数的所有自然数:以下代码中的错误是什么

我知道这可以通过使用轻松完成

if(i%5 == 0 OR i%3 ==0) sum+=i; 

但是以下C#代码有什么问题:

  int sum = 0; for(int i = 0, j = 0; i < 1000; i+=3, j+=5) { Console.WriteLine("i = " + i); Console.WriteLine("j = " + j); sum += i; Console.WriteLine("Sum after adding i = " + sum); if(j < 995 && j % 3 != 0) { sum += j; } Console.WriteLine("Sum after adding j = " + sum); } 

语句j < 995应该是j <= 995 ,否则你不会在你的总和上加995。

明显的错误是995是5的倍数,不会被添加,而996和999是3的倍数将被添加:循环条件中的1000和if条件中的995应该是相同的数字。

另外,如果你想将所有这些自然数小于1000的总和加起来,为什么排除995? 你可以放

 j <= 995 && j%3!=0 

这可能只是一个挑剔,但仍然:“全部”和“低于1,000”不是同一组自然数,你可能想要改变一些东西。

 for(int i = 0, j = 0; i < 15; i+=3, j+=5) 

将此更改为

 for(int i = 0, j = 0; i <= 15; i+=3, j+=5) 

使用<= (大于或等于运算符)

它的工作原理