我听说过很多有关Euler项目的信息,所以我认为我可以解决C#中的问题之一。网站上指出的问题如下:
如果我们列出所有低于10的自然数,它们是3或5的倍数,则得到3、5、6和9。这些倍数的总和为23。 找出1000以下3或5的所有倍数的总和。
如果我们列出所有低于10的自然数,它们是3或5的倍数,则得到3、5、6和9。这些倍数的总和为23。
找出1000以下3或5的所有倍数的总和。
我编写了如下代码:
class EulerProblem1 { public static void Main() { var totalNum = 1000; var counter = 1; var sum = 0; while (counter < totalNum) { if (DivisibleByThreeOrFive(counter)) sum += counter; counter++; } Console.WriteLine("Total Sum: {0}", sum); Console.ReadKey(); } private static bool DivisibleByThreeOrFive(int counter) { return ((counter % 3 == 0) || (counter % 5 == 0)); } }
最好用较少的冗长/更简洁的语法和更好的优化来获得关于替代实现的一些想法。想法可能从快速,肮脏到带出大炮消灭蚊子,不一而足。目的是探索计算机科学的深度,同时尝试改善这一特别琐碎的代码片段。
谢谢
使用LINQ(根据注释中的建议进行更新)
static void Main(string[] args) { var total = Enumerable.Range(0,1000) .Where(counter => (counter%3 == 0) || (counter%5 == 0)) .Sum(); Console.WriteLine(total); Console.ReadKey(); }