OneCompiler

Problem 3

171

/*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
}