logo

Java programma skaitļa kvadrātsaknes atrašanai bez sqrt metodes

Java valodā uz atrodiet skaitļa kvadrātsakni ir ļoti vienkārši, ja mēs izmantojam iepriekš definētu metodi. Java Matemātika klase nodrošina sqrt () metode, kā atrast skaitļa kvadrātsakni. Šajā sadaļā mēs izveidosim a Java programma, lai atrastu skaitļa kvadrātsakni, neizmantojot sqrt() metodi . Tas ir vispopulārākais jautājums jautāja iekšā Java intervija .

Ja skaitļa kvadrāts ir x, šī skaitļa kvadrātsakne būs skaitlis, kas reizināts ar sevi. Piemēram, kvadrātsakne no 625 ir 25. Ja mēs reizinām 25 divas reizes, mēs iegūstam skaitļa kvadrātu. Matemātiski skaitļa kvadrātsakne tiek dota šādi:

x=√x

Mēs izmantojām šādu formulu, lai atrastu skaitļa kvadrātsakni.

mikropakalpojumu apmācība
sqrtn+1=(kvtn+(skaits/kvn))/2,0

Piezīme: pirmajam kvadrātveida skaitlim ir jābūt ievades numuram/2.

Ieviesīsim iepriekš minēto formulu a Java programma un atrodiet kvadrātsakni.

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. izvads:

drausmīgs miegs
 Enter a number: 12 The square root of 12 is: 3.4641016151377544 

2. izvads:

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

Apskatīsim citu loģiku kvadrātsaknes atrašanai.

Nākamajā piemērā kvadrātsaknes atrašanai esam izmantojuši šādu procedūru.

  • Mēs esam inicializējuši iteratora mainīgo i=1 .
  • Pārbaudiet, vai mūsu ievadītais skaitlis ir ideāls kvadrāts. Ja i kvadrāts ir vienāds ar n, i būs n kvadrātsaknes vērtība.
  • Pretējā gadījumā atrodiet i zemākā vērtība . Atcerieties, ka kvadrāts no man ir jābūt lielākam par n . Skaitļa kvadrātsakne atrodas starp i-1 un i . Pēc darbību veikšanas mēs izmantojam binārās meklēšanas algoritms lai atrastu skaitļa kvadrātsakni līdz n zīmēm aiz komata.
  • Palieliniet mainīgo i par 1 .

Binārās meklēšanas algoritms

  • Atrodi vidējā vērtība no i-1 un i.
  • Atrodiet kvadrātu no vidējā vērtība un salīdziniet to ar n.
    • Ja vidējā vērtība * vidējā vērtība = n , vidējā vērtība ir dotā skaitļa kvadrātsakne. Salīdziniet vidējās vērtības kvadrātu ar n (līdz n zīmēm aiz komata), ja atšķirība ir neliela, vidējā vērtība būs skaitļa kvadrātsakne.
    • Ja vidējā vērtība * vidējā vērtība > n , kvadrātsakne pieder pie pirmā puse .
    • Ja vidējā vērtība * vidējā vērtība, kvadrātsakne pieder pie otra puse .

Realizēsim algoritmu Java programmā un atradīsim skaitļa kvadrātsakni.

Linux kā pārdēvēt direktoriju

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. izvads:

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

2. izvads:

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