Consider any number 'x'. If you start iterating divisors from 2 onwards, say you get the following:
I'll take an example case here, say 96
So, 96%2 = 0 and 96/2 = 48
So from one iteration of divisors which perfectly divides the given number, we get two divisors. Here in this case when we iterate for 2, we get two divisors 2, and 48.
Next 96%3 = 0 and 96/3 = 32 So, 3,32 is another pair of divisors
Note that with each pair, the 'distance' between the two divisors gets closer and closer.
What is the limit of this difference? Clearly, if x is a perfect square, say 625
then the limiting case will be 625%25 = 0 and 625/25 = 25. Where the two divisors are the same.
In the case of 96, [sqrt(96)]+1 = 10, so all we need to do is evaluate from 2 to 10.
The factors of 96 are (2,48),(3,32),(4,24),(6,16),(8,12).
Note that once we reach 10, any higher divisor that exists say for example 24 has already been discovered when we checked for x%4. Thus, it is sufficient to check only upto [sqrt(x)]+1 where [.] = smallest integer less than or equal to x
Hence instead of iterating over all values from 2 to n-1 or 2 to n/2, we can simply iterate from 2 to sqrt(x).