仅使用LINQ解决项目Euler挑战#1

时间:2013-12-07 01:15:06

标签: c# .net linq functional-programming

Project Euler problem #1基本上涉及查找总数小于1000并且可被三或五整除的总和。如果存在某种包含1到999(含)之间所有整数的预先存在的列表,那么使用LINQ将非常简单。

LINQ是否有内置的方法来生成整数序列?

2 个答案:

答案 0 :(得分:2)

您需要Enumerable.Range方法:

IEnumerable<int> seq = Enumerable.Range(1, 999).Select(x => x);

创建一个正方形序列:

IEnumerable<int> squares = Enumerable.Range(1, 10).Select(x => x * x);

奇数序列:

IEnumerable<int> oddNumbers = Enumerable.Range(1, 100).Where(x => x % 2 != 0);

答案 1 :(得分:2)

你可以将LINQ Enumerable.Range(取得你需要的起始索引和数量),Where与你的两个条件和Sum连在一起。

% == 0(模运算符)可确保您的号码可被其他数字整除。

这给出了以下LINQ单行:

Enumerable.Range(0, 1000).Where(number => number % 3 == 0 || number % 5 == 0).Sum();