Babylonian method for square root

Algorithm:
This method can be derived from (but predates) Newton–Raphson method.

1 Start with an arbitrary positive start value x (the closer to the
root, the better).
2 Initialize y = 1.
3. Do following until desired approximation is achieved.
a) Get the next approximation for root using average of x and y
b) Set y = n/x

Implementation:

C++

 #include using namespace std; class gfg {     /*Returns the square root of n. Note that the function */ public:     float squareRoot(float n)     {         /*We are using n itself as initial approximation           This can definitely be improved */         float x = n;         float y = 1;         float e = 0.000001; /* e decides the accuracy level*/         while (x - y > e) {             x = (x + y) / 2;             y = n / x;         }         return x;     } };    /* Driver program to test above function*/ int main() {     gfg g;     int n = 50;     cout << "Square root of " << n << " is " << g.squareRoot(n);     getchar(); }

C

 #include    /*Returns the square root of n. Note that the function */ float squareRoot(float n) {     /*We are using n itself as initial approximation    This can definitely be improved */     float x = n;     float y = 1;     float e = 0.000001; /* e decides the accuracy level*/     while (x - y > e) {         x = (x + y) / 2;         y = n / x;     }     return x; }    /* Driver program to test above function*/ int main() {     int n = 50;     printf("Square root of %d is %f", n, squareRoot(n));     getchar(); }

Java

 class GFG {        /*Returns the square root of n.     Note that the function */     static float squareRoot(float n)     {            /*We are using n itself as          initial approximation This          can definitely be improved */         float x = n;         float y = 1;            // e decides the accuracy level         double e = 0.000001;         while (x - y > e) {             x = (x + y) / 2;             y = n / x;         }         return x;     }        /* Driver program to test     above function*/     public static void main(String[] args)     {         int n = 50;            System.out.printf("Square root of "                           + n + " is " + squareRoot(n));     } }    // This code is contriubted by // Smitha DInesh Semwal

Python 3

 # Returns the square root of n. # Note that the function  def squareRoot(n):        # We are using n itself as     # initial approximation This     # can definitely be improved          x = n         y = 1                    # e decides the accuracy level         e = 0.000001         while(x - y > e):                    x = (x + y)/2             y = n / x                return x    # Driver program to test  # above function n = 50    print("Square root of", n, "is",               round(squareRoot(n), 6))    # This code is contributed by  # Smitha Dinesh Semwal

/div>

C#

 // C# Porgram for Babylonian // method of square root using System;    class GFG {        // Returns the square root of n.     // Note that the function     static float squareRoot(float n)     {            // We are using n itself as         // initial approximation This         // can definitely be improved         float x = n;         float y = 1;            // e decides the         // accuracy level         double e = 0.000001;         while (x - y > e) {             x = (x + y) / 2;             y = n / x;         }         return x;     }        // Driver Code     public static void Main()     {         int n = 50;         Console.Write("Square root of "                       + n + " is " + squareRoot(n));     } }    // This code is contriubted by nitin mittal.

PHP

 \$e)     {         \$x = (\$x + \$y)/2;         \$y = \$n / \$x;     }     return \$x; }    // Driver Code {     \$n = 50;     echo "Square root of \$n is ", squareRoot(\$n); }    // This code is contributed by nitin mittal. ?>

Output :

Square root of 50 is 7.071068

Example:

n = 4 /*n itself is used for initial approximation*/
Initialize x = 4, y = 1
Next Approximation x = (x + y)/2 (= 2.500000),
y = n/x  (=1.600000)
Next Approximation x = 2.050000,
y = 1.951220
Next Approximation x = 2.000610,
y = 1.999390
Next Approximation x = 2.000000,
y = 2.000000
Terminate as (x - y) > e now.

If we are sure that n is a perfect square, then we can use following method. The method can go in infinite loop for non-perfect-square numbers. For example, for 3 the below while loop will never terminate.

C++

 // C++ program for Babylonian // method for square root #include using namespace std;    class gfg {        /*Returns the square root of n. Note that the function */ public:     float squareRoot(float n)     {         /*We are using n itself as initial approximation     This can definitely be improved */         float x = n;         float y = 1;            /* e decides the accuracy level*/         float e = 0.000001;         while (x - y > e) {             x = (x + y) / 2;             y = n / x;         }         return x;     } };    /* Driver code*/ int main() {     gfg g;     int n = 49;     cout << "Square root of " << n << " is " << g.squareRoot(n);     getchar(); }    // This code is contributed by SoM15242

C

 // C program for Babylonian // method for square root #include    /* Returns the square root of     n. Note that the function    will not work for numbers     which are not perfect     squares*/ unsigned int squareRoot(int n) {     int x = n;     int y = 1;     while (x > y) {         x = (x + y) / 2;         y = n / x;     }     return x; }    // Driver Code int main() {     int n = 49;     printf("root of %d is %d", n, squareRoot(n));     getchar(); }

Java

 // Java program for Babylonian // method for square root import java.io.*;    public class GFG {        /* Returns the square root of      n. Note that the function     will not work for numbers      which are not perfect      squares*/     static long squareRoot(int n)     {         int x = n;         int y = 1;         while (x > y) {             x = (x + y) / 2;             y = n / x;         }         return (long)x;     }        // Driver Code     static public void main(String[] args)     {         int n = 49;         System.out.println("root of "                            + n + " is " + squareRoot(n));     } }    // This code is contributed by anuj_67.

Python3

 # python3 program for Babylonian  # method for square root    # Returns the square root of n. # Note that the function # will not work for numbers  # which are not perfect squares    def squareRoot(n):     x = n;     y = 1;     while(x > y):         x = (x + y) / 2;         y = n / x;     return x;    # Driver Code n = 49; print("root of", n, "is", squareRoot(n));    # This code is contributed by mits.

C#

 // C# program for Babylonian // method for square root    using System;    public class GFG {        /* Returns the square root of      n. Note that the function     will not work for numbers      which are not perfect      squares*/     static uint squareRoot(int n)     {         int x = n;         int y = 1;         while (x > y) {             x = (x + y) / 2;             y = n / x;         }         return (uint)x;     }        // Driver Code     static public void Main()     {         int n = 49;         Console.WriteLine("root of "                           + n + " is " + squareRoot(n));     } }    // This code is contributed by anuj_67.

PHP

 \$y)     {         \$x = (\$x + \$y) / 2;         \$y =\$n / \$x;     }     return \$x; }    // Driver Code \$n = 49; echo " root of ", \$n, " is ", squareRoot(\$n);              // This code is contributed by anuj_67. ?>

Output :

root of 49 is 7

tags:

Mathematical Mathematical