in reply to Re^3: OT: Finding Factor Closest To Square Root

in thread OT: Finding Factor Closest To Square Root

Here's an informal proof of our conjecture "The factor of N closest to sqrt(N) is less than sqrt(N)".

-- All code is 100% tested and functional unless otherwise noted.

- Let M be the positive square root of N. (
`M*M = N, M>0`) - The closest factor to M is bewteen 1 and 2*M. (i.e. 1 is closer to M than any number greater than twice M.
`(M-1 < 2*M-M)`) - For every pair of numbers whose product is N, one of the pair will be greater than M and the other less than M. (the product of two numbers greater than M is greater than N, and the product of two numbers less than M would be less than N)
- Take a pair of numbers whose product is N. Call the smaller (
`M-X`) and the larger (`M+Y`). (i.e.`X>0, Y>0`) - So,
`(M-X) * (M+Y) = N` - Multiplying out,
`M^2 + M*(Y-X) - X*Y = N` - But
`M^2 = N`(by definition) - Substituting:
`N + M*(Y-X) - X*Y = N` - Subtracting N:
`M*(Y-X) - X*Y = 0` - Since X and Y are positive (by definition, step 4), the term
`-X*Y`is negative - If
`-X*Y`is negative, the only way for the entire sum to equal 0 is if the term`M*(Y-X)`is positive - But M is positive (step 1), so
`(Y-X)`must also be positive, which means that Y is greater than X. - Finally, if Y is greater than X, the smaller factor,
`(M-X)`is closer to M than`(M+Y)`, so you can limit your factor search to numbers less than sqrt(N).

-- All code is 100% tested and functional unless otherwise noted.

In Section
Seekers of Perl Wisdom