Parallelization of number factors using OpenMP
I see that OpenMP's rules will make things a little difficult here.  For instance, I won't be able to concisely set i to either 2 or 3, depending on integer's parity.  This is because OpenMP requires the loop counter to be set within the loop, though it can still be declared beforehand.  I would otherwise have to put a ternary within the loop statement, which would look ugly.  It could save one iteration, which may not make a huge difference.

As such, I might as well initialize i within the loop statement and then remove the private part from the preprocessor directive:

    shared(factors, integer)
for (std::int64_t i = 2; i &lt;= integer; i++)


Performance-wise, I was able to get a small boost by initializing factors outside of the timed section and passing it to calcFactors().  Regardless of the time it usually takes to initialize an std::map, my runtime will always be limited by that as it's part of the serial code.

With the same division and modulus operations, I would likely not get any significant performance boost.  Regardless of the thread count, the number of modulus and division operations still vary, which may explain the poor scalability over time.  I also cannot test with higher thread counts due to my machine's limited number of available threads.