Square root implementations
SquareRoot(int)


returns half if the integer is not a perfect square. A very dubious decision. I'd consider returning a best integer approximation, or throwing an exception.
uses a linear search. A binary search would be quite faster. A Newton-Raphson (yes it works with integers) would be even factor.

An error approximation is better done as Math.abs(number - Math.pow(candidate_square_root, 2))