# 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 `

## 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
```

My Personal Notes arrow_drop_up

Article Tags :
Practice Tags :

6

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.