public IEnumerable <long> Search(long max) { if (_fullySeached >= max) { return(_memory.GetViewBetween(0, max).AsEnumerable()); } var primes = Sieve.Search(max); _memory.UnionWith(primes); SetFullySearched(max); return(primes); }