În Java, să găsiți rădăcina pătrată a unui număr este foarte ușor dacă folosim metoda predefinită. Java Matematică clasa oferă sqrt() metoda de a afla radacina patrata a unui numar. În această secțiune, vom crea un Program Java pentru a găsi rădăcina pătrată a unui număr fără a utiliza metoda sqrt(). . Este cel mai popular întrebare a întrebat în Interviu Java .
Dacă pătratul unui număr este x, rădăcina pătrată a acelui număr va fi numărul înmulțit cu el însuși. De exemplu, rădăcina pătrată a lui 625 este 25. Dacă înmulțim 25 de două ori, obținem pătratul numărului. Din punct de vedere matematic, rădăcina pătrată a unui număr este dată astfel:
x=√XAm folosit următoarea formulă pentru a găsi rădăcina pătrată a unui număr.
sqrtn+1=(sqrtn+(num/sqrtn))/2.0Notă: primul număr sqrt ar trebui să fie numărul de intrare/2.
Să implementăm formula de mai sus în a program Java și găsiți rădăcina pătrată.
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; } }
Ieșire 1:
Enter a number: 12 The square root of 12 is: 3.4641016151377544
Ieșire 2:
Enter a number: 25 The square root of 25 is: 5.0
Să vedem o altă logică pentru a găsi rădăcina pătrată.
În exemplul următor, am folosit următoarea procedură pentru a găsi rădăcina pătrată.
- Am inițializat o variabilă iteratoare i=1 .
- Verificați că numărul pe care l-am introdus este un pătrat perfect sau nu. Dacă pătratul lui i este egal cu n, i va fi valoarea rădăcinii pătrate a lui n.
- În caz contrar, găsiți cea mai mică valoare a lui i . Amintiți-vă că pătratul de trebuie să fiu mai mare decât n . Rădăcina pătrată a unui număr se află între i-1 și i . După efectuarea pașilor, folosim algoritm de căutare binar pentru a găsi rădăcina pătrată a unui număr până la n zecimale.
- Creșteți variabila i cu 1 .
Algoritmul de căutare binar
- Găsi valoare medie de i-1 și i.
- Găsiți pătratul lui valoare medie și comparați-l cu n.
- Dacă valoare medie * valoare medie = n , valoarea medie este rădăcina pătrată a numărului dat. Comparați pătratul valorii medii cu n (până la n zecimale) dacă diferența este minoră, valoarea medie va fi rădăcina pătrată a numărului.
- Dacă valoare medie * valoare medie > n , rădăcina pătrată aparține lui prima jumătate .
- Dacă valoare medie * valoare medie
, rădăcina pătrată aparține lui a doua jumătate .
Să implementăm algoritmul într-un program Java și să găsim rădăcina pătrată a unui număr.
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 }
Ieșire 1:
Enter a number: 625 The square root of 625.0 is 25.0
Ieșire 2:
Enter a number: 129 The square root of 129.0 is 11.357816688716412