// logn
sqrt(n):
if n < 1:
throw
lo = 0, hi = n
if n == 1:
return 1
while true:
mid = lo + (hi-lo)/2 //avoid overflow
x = mid*mid
if x < n:
lo = mid
else if x > n:
hi = mid
else: // mid*mid == n
return mid
if lo +1 == hi: //lo == mid
return lo
No comments:
Post a Comment