В Java, до намиране на корен квадратен от число е много лесно, ако използваме предварително дефинирания метод. Java математика клас предоставя sqrt() метод за намиране на корен квадратен от число. В този раздел ще създадем a Java програма за намиране на корен квадратен от число без използване на метода sqrt(). . Тя е най-популярната въпрос попита в Java интервю .
Ако квадратът на число е x, квадратният корен от това число ще бъде числото, умножено по себе си. Например корен квадратен от 625 е 25. Ако умножим 25 два пъти, получаваме квадрата на числото. Математически квадратният корен на число се дава като:
x=√хИзползвахме следната формула, за да намерим корен квадратен от число.
sqrtn+1=(квн+(брой/квн))/2,0Забележка: Първото sqrt число трябва да бъде въведеното число/2.
Нека приложим горната формула в a Java програма и намерете корен квадратен.
FindSquareRootExample1 .java
import java.util.Scanner; public class FindSquareRootExample1 { public static void main(String[] args) { System.out.print('Enter a number: '); //creating object of the Scanner class Scanner sc = new Scanner(System.in); //reading a number form the user int n = sc.nextInt(); //calling the method and prints the result System.out.println('The square root of '+ n+ ' is: '+squareRoot(n)); } //user-defined method that contains the logic to find the square root public static double squareRoot(int num) { //temporary variable double t; double sqrtroot=num/2; do { t=sqrtroot; sqrtroot=(t+(num/t))/2; } while((t-sqrtroot)!= 0); return sqrtroot; } }
Резултат 1:
Enter a number: 12 The square root of 12 is: 3.4641016151377544
Резултат 2:
Enter a number: 25 The square root of 25 is: 5.0
Нека видим друга логика за намиране на корен квадратен.
В следващия пример сме използвали следната процедура, за да намерим корен квадратен.
- Инициализирахме променлива на итератор i=1 .
- Проверете дали числото, което сме въвели, е перфектен квадрат или не. Ако на квадрат от i е равно на n, т.е ще бъде стойността на корен квадратен от n.
- В противен случай намерете най-ниската стойност на i . Не забравяйте, че квадратът на i трябва да е по-голямо от n . Квадратният корен на число се намира между i-1 и i . След като изпълним стъпките, използваме двоичен алгоритъм за търсене за намиране на корен квадратен от число до n знака след десетичната запетая.
- Увеличете променливата i с 1 .
Алгоритъм за двоично търсене
- Намери средна стойност на i-1 и i.
- Намерете квадрата на средна стойност и го сравнете с n.
- Ако средна стойност * средна стойност = n , средната стойност е корен квадратен от даденото число. Сравнете квадрата на средната стойност с n (до n знака след десетичната запетая), ако разликата е незначителна, средната стойност ще бъде корен квадратен от числото.
- Ако средна стойност * средна стойност > n , квадратният корен принадлежи на първата половина .
- Ако средна стойност * средна стойност
, квадратният корен принадлежи на втора половина .
Нека внедрим алгоритъма в програма на Java и намерим корен квадратен от число.
FindSquareRootExample2.java
import java.util.Scanner; public class FindSquareRootExample2 { public static void main(String[] args) { double number = 0, sqrt=0; //object of the Scanner class Scanner sc = new Scanner(System.in); System.out.print('Enter a number: '); //reading a double value from the user number = sc.nextDouble(); //method calling sqrt = squareRoot(number); //prints the result System.out.println(The square root of '+number+ ' is ' +sqrt); } //user-defined method to find the square root of a number private static double squareRoot(double number) { //iterator variable int i = 1; while(true) { //for perfect square numbers if(i*i == number) return i; //for not perfect square numbers else if(i*i > number) //returns the value calculated by the method decimalSqrt() return decimalSqrt(number,i-1,i); //increments the variable i by 1 i++; } } // recursive method to find the square root of a number up to 7 decimal places private static double decimalSqrt(double number, double i, double j) //calculates the middle of i and j double midvalue = (i+j)/2; //finds the square of the midvalue double square = midvalue * midvalue; //compares the midvalue with square up to n decimal places if(square==number }
Резултат 1:
Enter a number: 625 The square root of 625.0 is 25.0
Резултат 2:
Enter a number: 129 The square root of 129.0 is 11.357816688716412