I ran into something interesting when working last night that wasn’t immediately obvious to me at first. It’s an alternate way to calculate the product of any two numbers.

I first noticed something was going on when I squared a number and then compared it to the product of numbers on either side of the original number:

[code]5 * 5 = 25

6 * 4 = 24 (1 from 25)

7 * 3 = 21 (3 from 24)

8 * 2 = 16 (5 from 21)

9 * 1 = 9 (7 from 16)

[/code]

If you subtract each result from the one before it, you see the series: 1, 3, 5, 7. “That’s interesting, I’m increasing the distance between the two numbers, and the result keeps changing by 2 also, I wonder if there’s something to that. Maybe I just got lucky, and this is something odd about 5*5 in particular. So I tried the same process, but started with 6*6, or 8*8 and got the same result.

Next, instead of looking at the difference in values from the product before it, I decided to check what the value would be compared to the original square of their average.

[code]5 * 5 = 25 (the average, base case)

6 * 4 = 24 (1 from average)

7 * 3 = 21 (4 from average)

8 * 2 = 16 (9 from average)

9 * 1 = 9 (16 from average)

[/code]

Now that’s interesting! The result of two seemingly unrelated numbers, 7 and 3 for instance, is a perfect square away from the square of the two numbers’ average.

So at this point, I have the theory that:

[code]x * y = average(x,y)^2 – someOtherSquareRelatedTo(x,y)

[/code]

Looking at the 8*2 example, i notice that they’re 9 away from 25, or 3^{2}. The average of 8 and 2 is 5, so both 8 and 2 are a distance of 3 away from 5. So that’d give the formula:

[code]x * y = average(x,y)^2 – (average(x,y) – min(x,y))^2

[/code]

If I expanded that out, then that’d result in:

[code]x * y = average(x,y)^2 –

(average(x,y)^2 – 2*average(x,y)*min(x,y) + min(x,y)^2)

[/code]

which simplifies to:

[code]x * y = 2*average(x,y)*min(x,y) – min(x,y)^2

[/code]

That looks just crazy to me. Maybe I’m missing something, but that’s just not obvious to me at all when I think about arbitrary x and y. I set up a script here just to double check and run the numbers, and sure enough it works out. Even for fractions and negative x and/or y.

Did I miss this lesson in school? I feel proud that I’ve figured this out, and usually when I feel like this it means I’ve missed something super obvious :D.

http://en.wikipedia.org/wiki/Difference_of_two_squares