First, suppose n is the shortest side of the triangle, m, k are other two sides. According to Pythagorean Theorem, we know *n*^{2} + *m*^{2} = *k*^{2}

just do a change *k*^{2} - *m*^{2} = *n*^{2}

futherly (*k* + *m*)(*k* - *m*) = *n*^{2}

as we know, *n*^{2} × 1 = *n*^{2} so we can suppose that *k* + *m* = *n*^{2}, *k* - *m* = 1 [because we have SPJ]

easily, we get

because the side is a interger, so this solution can only be used when n is a odd.

So how to deal with even? we find that if (k-m) is odd, the solution is suitable for odd. On the other hand, we guess that if(k-m) is even, the solution is suitable for even.

just as this,

so, we get

this is an *O*(1) algorithm.

So if you want to see more clearly, you can see the formual on this page. if you have some questions, i am willing to help you.:) [my english is not very good, so please pass some grammer fault.:P]