Originalmente em math.SE, mas sem resposta lá. Considere o seguinte algoritmo. u := 0 v := n+1; while ( (u + 1) is not equal to v) do x := (u + v) / 2; if ( x * x <= n) u := x; else v := x; end_if end_while onde u, v e n são números inteiros e a operação de divisão é divisão inteira....