Remake of factoring/prime factorization calculator
Factors::calculate() can be sped up by:


performing two integer adds after each iteration to determine loop termination


std::sqrt()'s overhead, calculations, and casting can be slow
for-loops shouldn't increment towards a floating-point value
incrementing towards an integer value is faster and proper
adding is generally fast and can be done in place of multiplication

starting the loop counter at 2 or 3 (if integer is even or odd respectively)


fewer increments means fewer division operations (division is slow)



This integer add method replaces multiplication as such:

0*0 = 0
1*1 = 1 = 0 + 1
2*2 = 4 = 1 + 3
3*3 = 9 = 4 + 5
4*4 = 16 = 9 + 7
// etc.


Revised function with explanations:

Factors::FactorsList Factors::calculate() const
{
    FactorsList factors;
    std::uint64_t incr = 0;    // will increment by 2 each iteration
    std::uint64_t incrSum = 1; // will accumulate value of 'incr' each iteration

    // if integer is even, i starts at 2
    // if integer is odd, i starts at 3
    std::uint64_t i = (integer % 2 == 0) ? 2 : 3;

    // 'i' is only incremented by 1 for checking each number
    // value of 'incrSum' will determine loop termination
    for (; incrSum &lt;= integer; ++i)
    {
        if (integer % i == 0)
        {
            factors[i] = integer / i;
        }

        incr += 2;
        incrSum += incr;
    }

    return factors;
}