/// <summary>
            /// Initializes a collection consisting out of a single value.
            /// An integer cand is prime iff there is a prime number
            /// in the range (cand-1, cand].
            /// </summary>
            /// <param name="sieve">The sieve to be used.</param>
            /// <param name="cand">The prime number candidate.</param>
            public PrimeCollection(PrimeSieve sieve, int cand)
            {
                // Note, that this PrimeCollection is not made public
                // via PrimeSieve. It is used only to test primality.
                // It is a private constructor only for PrimeSieve.

                this.sieve      = sieve;
                this.primeRange = this.enumRange = null;

                this.start = this.IndexOf(cand - 1, 0, sieve.numberOfPrimes);
                this.end   = sieve.primes[this.start] == cand ? this.start + 1 : this.start;

                this.isPrime = this.start < this.end;
                if (this.isPrime)
                {
                    this.start = this.IndexOf(cand, this.start, sieve.numberOfPrimes);
                }
                this.nextPrime = sieve.primes[this.start];
                this.increment = 0;
            }
            /// <summary />
            /// <param name="sieve"></param>
            /// <param name="enumRange"></param>
            /// <param name="increment"></param>
            public PrimeCollection(PrimeSieve sieve, PositiveRange enumRange, int increment)
            {
                sieve.sieveRange.ContainsOrFail(enumRange);

                this.sieve     = sieve;
                this.enumRange = enumRange;

                int nops = sieve.numberOfPrimes;

                this.start = this.IndexOf(enumRange.Min - 1, 0, nops - 1);
                this.end   = this.IndexOf(enumRange.Max, this.start, nops) - 1;

                if (this.end < this.start) //--  PrimeRange is empty.
                {
                    this.end        = -1;
                    this.primeRange = new PositiveRange(0, 0);
                }
                else
                {
                    this.primeRange = new PositiveRange(this.start + 1, this.end + 1);
                }
                this.increment = increment;
            }