Calculate divisors using prime factorization
Bugs

FindPrimes is one of the better sieve implementations I've seen posted on this site, but it has an out-by-one bug. Here's some test code, which you can tidy up in a unit testing framework if you want to do things properly:

    var df = new DivisorFinder(72);
    int[] knownPrimes = new int[] { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47 };
    for (int limit = 1; limit &lt;= 50; limit++)
    {
        var expected = knownPrimes.Where(p =&gt; p &lt; limit);
        var observed = df.FindPrimes(limit);
        if (!expected.SequenceEqual(observed)) Console.WriteLine($"Error for limit {limit}");
    }




FindDivisors has a more alarming bug. What are the divisors of 72? According to this code, they include 144...



Structure

FindPrimes should be static: nothing in that method depends on instance fields or properties.

FindPrimeFactors modifies state, so it's not idempotent. Calling FindDivisors twice on the same object should give the same results, but it doesn't.

Frankly, this class is an example of OO purism at its worst. There's no good reason for any of the methods to be non-static.



IMO the dependency relationship between FindDivisors and FindPrimeFactors is wrong: FindPrimeFactors should be responsible for calculating which primes it needs to use. Consider that if you want to have multiple methods which use the prime factors in different ways, you shouldn't have to copy-paste the line

    var primes = FindPrimes((int) (Math.Sqrt(_number) + 1));


into every single one.