Armstrong Number Validator
Why use multiplyexact?
I'm puzzled why you wrote this:

digitSum += Math.multiplyExact(Math.multiplyExact(remainder, remainder), remainder);


instead of this:
digitSum += remainder * remainder * remainder;

You already know that remainder is a single digit value so computing the cube of it will never overflow.
Extraneous check
Your final return statement could be reduced from this:

return (0 == quotient &amp;&amp; digitSum == candidate);


to this:
return (digitSum == candidate);

Your while loop will only terminate on this condition:
quotient == 0 || digitSum &gt; candidate

which means that when digitSum == candidate, quotient must always be 0.