The Babylonian algorithm to compute the square root of a positive number n is as follows:
1. Make a guess at the answer (you can pick n /2 as your initial guess).
2. Compute r = n / guess
3. Set guess = (guess +r)/ 2
4. Go back to step 2 for as many iterations as necessary. The more you repeat
steps 2 and 3, the closer guess will become to the square root of n.
Write a program that inputs a double for n, iterates through the Babylonian algorithm five times, and outputs the answer as a double to two decimal places. Your answer will be most accurate for small values of n.
Program:
// BabylonianDemo.java
import java.util.Scanner;
public class BabylonianDemo
{
public static void main(String[] args)
{
Scanner keyboard = new Scanner(System.in);
double n;
double guess;
double r;
System.out.print("Enter a value for n: ");
n = keyboard.nextDouble();
guess = n / 2;
r = n / guess;
guess = (guess + r) / 2.0;
r = n / guess;
guess = (guess + r) / 2.0;
r = n / guess;
guess = (guess + r) / 2.0;
r = n / guess;
guess = (guess + r) / 2.0;
r = n / guess;
guess = (guess + r) / 2.0;
System.out.printf(
"The square root of %.2f is approximately: %.2f\n", n, guess);
}
}
Output:
Enter a value for n: 16
The square root of 16.00 is approximately: 4.00
import java.util.Scanner;
public class BabylonianAlgorithm {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter a positive number: ");
int n = keyboard.nextInt();
System.out.println("Enter number of iteration: ");
int iterations = keyboard.nextInt();
double guess = (n / 2);
for (int i = 1; i <= iterations; i++) {
double r = (n / guess);
guess = (guess + r) / 2;
}
System.out.printf("The square of %,d is: %,.7f", n, guess);
keyboard.close();
}
}
Post the discussion to improve the above solution.