logo

Java program na nájdenie druhej odmocniny čísla bez metódy sqrt

V Jave, do nájsť druhú odmocninu čísla je veľmi jednoduché, ak používame vopred definovanú metódu. Java Matematika trieda poskytuje sqrt() metóda na nájdenie druhej odmocniny čísla. V tejto časti vytvoríme a Java program na nájdenie druhej odmocniny čísla bez použitia metódy sqrt(). . Je najpopulárnejší otázka spýtal sa v Java rozhovor .

Ak je druhá mocnina čísla x, druhá odmocnina tohto čísla bude číslom vynásobeným samým sebou. Napríklad druhá odmocnina z 625 je 25. Ak vynásobíme 25 dvakrát, dostaneme druhú mocninu čísla. Matematicky je druhá odmocnina čísla daná ako:

x=√X

Na nájdenie druhej odmocniny čísla sme použili nasledujúci vzorec.

sqrtn+1=(sqrtn+(počet/čvn))/2,0

Poznámka: Prvé číslo sqrt by malo byť vstupné číslo/2.

Implementujme vyššie uvedený vzorec v a Java program a nájdite druhú odmocninu.

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

Výstup 1:

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

Výstup 2:

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

Pozrime sa na inú logiku na nájdenie druhej odmocniny.

V nasledujúcom príklade sme použili nasledujúci postup na nájdenie druhej odmocniny.

  • Inicializovali sme premennú iterátora i=1 .
  • Skontrolujte, či číslo, ktoré sme zadali, je dokonalé alebo nie. Ak štvorec i sa rovná n, i bude druhá odmocnina hodnoty n.
  • V opačnom prípade nájdite najnižšia hodnota i . Pamätajte, že štvorec i musí byť väčšie ako n . Druhá odmocnina čísla leží medzi i-1 a i . Po vykonaní krokov použijeme binárny vyhľadávací algoritmus nájsť druhú odmocninu čísla až na n desatinných miest.
  • Zvýšte premennú i o 1 .

Binárny vyhľadávací algoritmus

  • Nájsť stredná hodnota i-1 a i.
  • Nájdite štvorec stredná hodnota a porovnajte to s n.
    • Ak stredná hodnota * stredná hodnota = n , stredná hodnota je druhá odmocnina daného čísla. Porovnajte druhú mocninu strednej hodnoty s n (do n desatinných miest), ak je rozdiel menší, stredná hodnota bude druhou odmocninou čísla.
    • Ak stredná hodnota * stredná hodnota > n , druhá odmocnina patrí k prvá polovica .
    • Ak stredná hodnota * stredná hodnota, druhá odmocnina patrí k druhá polovica .

Implementujme algoritmus v programe Java a nájdime druhú odmocninu čísla.

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 } 

Výstup 1:

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

Výstup 2:

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