In: Computer Science
Chapter 3 Exercise 1
Babylonian Algorithm. 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. Computer = n / guess.
3. Set guess = (guess +r) /
2.
4. Go back to step 2 until the
last two guess values are within 1% of each other.
Write a program that inputs an integer for n, iterates through the Babylonian algorithm until the guess is within 1% of the previous guess, and outputs the answer as a doubleto two decimal places. Your answer should be accurate even for large values of n.
INPUT and PROMPTS. The program prints "This program estimates square roots." and then prompts for a positive integer as follows: ("Enter an integer to estimate the square root of: " and then reads in the integer.
OUTPUT. Each time a new guess is computed, the program prints ithe line "Current guess: g", where g is the current guess, printed out with no special formatting. The final output is "The estimated square root of x is y", where x is the integer that was read in and y is the value computed by the procedure described above, printed out to two decimal places and a toal of six characters.
CLASS NAMES. Your program class should be called Babylonia
Answer:
import java.util.Scanner;
public class BabylonianAlgorithm
{
/*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
ten times, and outputs the answer as a double to two
decimal places. Your
answer will be most accurate for small values of
n.
*/
public static void main(String[] args)
{
Scanner input = new
Scanner(System.in);
Double n, r, guess;
System.out.println("Please enter a
positive number to compute it's square root.");
n = input.nextDouble();
//initial guess n/2
guess = n / 2;
for(int i = 0; i < 10;
i++)
{
r = n /
guess;
guess = (guess +
r) / 2;
}
System.out.print("The guess for the
the square root of " + n);
System.out.printf(" is %.2f.%n", n,
guess);
input.close();
}
}