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=√XNa nájdenie druhej odmocniny čísla sme použili nasledujúci vzorec.
sqrtn+1=(sqrtn+(počet/čvn))/2,0Pozná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