using System; using System.Collections.Generic; using System.Linq; public static class IEnumerableExtension { public static IEnumerable Sieve(this IEnumerable source){ long first = source.First(); yield return first; foreach (long i in source.Where(n => n % first != 0) .Sieve()){ yield return i; } } }