diff --git a/python/69_sqrtx.py b/python/69_sqrtx.py new file mode 100644 index 0000000..6db86e1 --- /dev/null +++ b/python/69_sqrtx.py @@ -0,0 +1,12 @@ +class Solution: + def mySqrt(self, x: int) -> int: + # Use Newton-Raphson iteration + # y**2 - x = 0 = f(y) + # f'(y) = 2y + # y = y - (y**2 - x)/(2y) + y = 1 + close_enough = False + while not close_enough: + y -= (y*y-x)/(2*y) + close_enough = y*y - x <= 0.1 and (y+1)*(y+1) > x + return floor(y)