The "no factorial is a perfect square" is used to justify why square roots are applied before any factorial on a given node of the evaluation tree.
No factorial is applied on a non integer intermediate result indeed, but if the intermediate result "becomes integer again", factorial are tried.
For example, if a candidate is (1/2) * 3 * 4 + 5, then the algorithm won't try to compute any factorial of (1/2) * 3 = 1.5, but it will consider (1/2) * 3 * 4 = 6.0 as integer and try the factorial on 6.