logo

Program Java do znajdowania pierwiastka kwadratowego z liczby bez metody sqrt

W Javie do znajdź pierwiastek kwadratowy z liczby jest bardzo proste, jeśli zastosujemy wcześniej zdefiniowaną metodę. Jawa Matematyka klasa zapewnia sqrt() metoda znajdowania pierwiastka kwadratowego z liczby. W tej sekcji utworzymy plik Program w języku Java służący do znajdowania pierwiastka kwadratowego z liczby bez użycia metody sqrt(). . Jest najpopularniejszy pytanie zapytał w Wywiad w Javie .

Jeśli kwadrat liczby wynosi x, pierwiastkiem kwadratowym tej liczby będzie liczba pomnożona przez samą siebie. Na przykład pierwiastek kwadratowy z 625 wynosi 25. Jeśli pomnożymy 25 dwa razy, otrzymamy kwadrat liczby. Matematycznie pierwiastek kwadratowy z liczby wyraża się wzorem:

x=√X

Aby znaleźć pierwiastek kwadratowy z liczby, skorzystaliśmy z poniższego wzoru.

kwadratn+1=(kwadratN+(liczba/kwN))/2.0

Uwaga: Pierwsza liczba sqrt powinna być liczbą wejściową/2.

Zaimplementujmy powyższy wzór w a Program Java i znajdź pierwiastek kwadratowy.

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; } } 

Wyjście 1:

 Enter a number: 12 The square root of 12 is: 3.4641016151377544 

Wyjście 2:

 Enter a number: 25 The square root of 25 is: 5.0 

Zobaczmy inną logikę, aby znaleźć pierwiastek kwadratowy.

W poniższym przykładzie zastosowaliśmy następującą procedurę, aby znaleźć pierwiastek kwadratowy.

  • Zainicjowaliśmy zmienną iteratora ja=1 .
  • Sprawdź, czy wprowadzona przez nas liczba jest idealna, czy nie. Jeśli kwadrat i jest równy n, tj będzie wartością pierwiastka kwadratowego z n.
  • W przeciwnym razie znajdź najniższa wartość i . Pamiętaj, że kwadrat i musi być większe niż n . Pierwiastek kwadratowy z liczby leży pomiędzy i-1 I I . Po wykonaniu kroków używamy Algorytm wyszukiwania binarnego znaleźć pierwiastek kwadratowy z liczby do n miejsc po przecinku.
  • Zwiększ zmienną i o 1 .

Algorytm wyszukiwania binarnego

  • Znaleźć wartość średnia z i-1 i i.
  • Znajdź kwadrat wartość średnia i porównaj to z n.
    • Jeśli wartość średnia * wartość średnia = n , wartość środkowa jest pierwiastkiem kwadratowym z danej liczby. Porównaj kwadrat wartości środkowej z n (do n miejsc po przecinku), jeśli różnica jest niewielka, wartość średnia będzie pierwiastkiem kwadratowym z liczby.
    • Jeśli wartość średnia * wartość średnia > n , pierwiastek kwadratowy należy do pierwsza połowa .
    • Jeśli wartość średnia * wartość średnia, pierwiastek kwadratowy należy do druga połowa .

Zaimplementujmy algorytm w programie Java i znajdźmy pierwiastek kwadratowy z liczby.

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 } 

Wyjście 1:

 Enter a number: 625 The square root of 625.0 is 25.0 

Wyjście 2:

 Enter a number: 129 The square root of 129.0 is 11.357816688716412