1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| public class Problem10
{
public Problem10() { }
public void Prob10()
{
long res = GeneratePrimes();
Console.WriteLine("Result 10 => {0}", res);
Console.ReadKey(true);
}
public static IEnumerable<long> GeneratePrimes()
{
var range = Enumerable.Range(2, int.MaxValue - 1);
var answers = from number in range
where number.IsPrime()
select (long)number;
return answers;
}
private static bool IsPrime(this int number)
{
bool isPrime = knownPrimes.TakeWhile(n => n * n <= number).
TrueForAll(n => number % n != 0);
if (isPrime)
knownPrimes.Add(number);
return isPrime;
}
public static bool TrueForAll<T>(this IEnumerable<T> sequence, Predicate<T> test)
{
foreach (T item in sequence)
if (!test(item))
return false;
return true;
}
} |
Partager