Problem 3
/*Problem 3
Complexity: Medium
You have to find square root of a given positive integer. If it is not a perfect square, compute the square root to a precision of 3 digits after decimal point.
You cannot use predefined functions for computing the square root.
*/
//Import
import java.util.Scanner;
//Main Class
public class FindSquareRoot
{
// Method to check the number is perfect square or not
public static boolean checkPerfectSquare(double number)
{
for (int i = 1; i * i <= number; i++)
{
if ((number % i == 0) && (number / i == i))
{
return true;
}
}// End of for-loop
return false;
}//End of method
// Method to find the square root
public static void squareRoot(double number)
{
// Temporary variable
double temp;
double temp_sqroot = number / 2;
//do-while loop to get square root
do
{
temp = temp_sqroot;
temp_sqroot = (temp + (number / temp)) / 2;
} while ((temp - temp_sqroot) != 0);
// To check number is perfect square or not
if (checkPerfectSquare(number))
{
System.out.printf("Square root is : %d", (int) temp_sqroot );
}//End of if-block
else
System.out.printf("Square root is : %.3f", temp_sqroot);
} // End of method
// Main method
public static void main(String[] args)
{
// Object of the Scanner class
Scanner sc = new Scanner(System.in);
System.out.print("Enter a positive number: ");
// Reading a number from the user
double number = sc.nextDouble();
// To check if number is negative
if (number < 0)
{
System.out.println("Please, enter a positive integer!");
}//End of if-block
else
{
//Since square root of 0 is 0 and 1 is 1 always
if (number == 0 || number == 1)
{
System.out.printf("Square root is : " + (int) number);
}// End of if-block
else
//Tf number is >= 2 find square root
FindSquareRoot.squareRoot(number);
}// End of else-block
/* Author @Ayesha Sumayya Khanum */
// End of main
}
// Class exit
}