Java, į rasti skaičiaus kvadratinę šaknį yra labai paprasta, jei naudojame iš anksto nustatytą metodą. Java Matematika klasė suteikia sqrt () būdas rasti skaičiaus kvadratinę šaknį. Šiame skyriuje mes sukursime a Java programa, skirta rasti skaičiaus kvadratinę šaknį nenaudojant sqrt() metodo . Jis yra populiariausias klausimas paklausė Java interviu .
Jei skaičiaus kvadratas yra x, to skaičiaus kvadratinė šaknis bus skaičius, padaugintas iš savęs. Pavyzdžiui, kvadratinė šaknis iš 625 yra 25. Jei 25 padauginsime du kartus, gausime skaičiaus kvadratą. Matematiškai skaičiaus kvadratinė šaknis pateikiama taip:
x=√xNorėdami rasti skaičiaus kvadratinę šaknį, naudojome šią formulę.
kvn+1=(kvn+ (skaičius/kvn))/2,0Pastaba: pirmasis sqrt skaičius turi būti įvesties skaičius/2.
Įgyvendinkime aukščiau pateiktą formulę a Java programa ir raskite kvadratinę šaknį.
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 išvestis:
atnaujinama java
Enter a number: 12 The square root of 12 is: 3.4641016151377544
2 išvestis:
Enter a number: 25 The square root of 25 is: 5.0
Pažiūrėkime, kaip rasti kvadratinę šaknį.
Šiame pavyzdyje mes naudojome šią procedūrą, kad surastume kvadratinę šaknį.
- Mes inicijavome iteratoriaus kintamąjį i=1 .
- Patikrinkite, ar įvestas skaičius yra tobulas kvadratas, ar ne. Jei i kvadratas lygus n, i bus n kvadratinės šaknies reikšmė.
- Priešingu atveju suraskite mažiausia i reikšmė . Atminkite, kad kvadratas aš turiu būti didesnis nei n . Skaičiaus kvadratinė šaknis yra tarp i-1 ir i . Atlikę veiksmus, naudojame dvejetainis paieškos algoritmas rasti skaičiaus kvadratinę šaknį iki n skaitmenų po kablelio.
- Padidinkite kintamąjį i 1 .
Dvejetainės paieškos algoritmas
- Surask vidutinė vertė i-1 ir i.
- Raskite kvadratą vidutinė vertė ir palyginkite su n.
- Jeigu vidutinė reikšmė * vidurinė reikšmė = n , vidutinė reikšmė yra nurodyto skaičiaus kvadratinė šaknis. Palyginkite vidutinės reikšmės kvadratą su n (iki n skaitmenų po kablelio), jei skirtumas nedidelis, vidutinė reikšmė bus skaičiaus kvadratinė šaknis.
- Jeigu vidutinė reikšmė * vidutinė vertė > n , kvadratinė šaknis priklauso pirmoji pusė .
- Jeigu vidutinė vertė * vidutinė vertė
, kvadratinė šaknis priklauso antroji pusė .
Įdiegkime algoritmą Java programoje ir suraskime skaičiaus kvadratinę šaknį.
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 išvestis:
formato java eilutė
Enter a number: 625 The square root of 625.0 is 25.0
2 išvestis:
Enter a number: 129 The square root of 129.0 is 11.357816688716412