Класс java Math предоставляет метод sqrt() для нахождения квадратного корня числа. В этом разделе мы создадим программу на Java для нахождения квадратного корня из n.
Класс java Math предоставляет метод sqrt() для нахождения квадратного корня числа. В этом разделе мы создадим программу на Java для нахождения квадратного корня из n.
В Java найти квадратный корень числа очень просто, если мы используем предопределенный метод. Класс Java Math предоставляет метод sqrt() для нахождения квадратного корня числа. В этом разделе мы создадим программу на Java для нахождения квадратного корня числа без использования метода sqrt().
Что такое идеальный квадрат?
Идеальный квадрат – это целое число, являющееся квадратом целого числа. Например,
X = 9 = 3 * 3 = 3^{2}X\=9=3∗3=32
Здесь 9 — идеальный квадрат, потому что 99 — это квадрат 33. С другой стороны, 1010 — не идеальный квадрат, потому что его нельзя представить в виде квадрата целого числа.
во-первых, нам нужно придумать число, представляющее собой идеальный квадрат, например n = 36.
Позвольте мне сначала предложить алгоритм, а затем мы разберем его шаг за шагом.
- Начните с i=1, если i * i == n, тогда i – это квадратный корень из n, поскольку n – полный квадрат.
- если i∗i \› n, это означает, что квадратный корень должен лежать между (i-1, I) назовем их (низкий,высокий).
- Применить бинарный поиск в диапазоне (низкий,высокий). Найти серединусередину из (минимум,максимум):
- если mid∗mid\==n, это означает, что мы предполагаем, что mid — это квадратный корень из n.
- если mid∗mid › n*, это означает, что сделанное нами предположение неверно. Это означает, что квадратный корень из n должен быть меньше среднего, поскольку любое значение больше среднего никогда не может удовлетворять условию**mid∗mid\==н. Следовательно, мы попытаемся найти квадратный корень слева от середины, повторив шаг 3 для (low,mid)*.
- В противном случае mid∗mid‹n означает, что наше предположение неверно. Это означает, что квадратный корень из n должен быть больше среднего, поскольку любое значение меньше среднего никогда не может удовлетворить условию mid∗mid\== п. Следовательно, мы попытаемся найти квадратный корень справа от mid, повторив шаг 3 для (mid,high).
public class SqureRoot { public static void main(String[] args) { int n = 40;// number whose square root we have to find System.out.println(sqrt(n, p)); } // code for square root find static int sqrt(int n, int p) { int start = 0; int end = n; int root = 0; // binary search logic while (start <= end) { int mid = start + (end - start) / 2; if (mid * mid == n) { root = mid; return root; } if (mid * mid > n) { end = mid - 1; } else { start = mid + 1; } } return root; } }
но рассмотрим сценарий, в котором число будет несовершенным квадратным числом, например 40.
для этого мы должны проверять цифры в десятичных числах, пока не захотим проверить.
это кажется немного сложным, но это не так.
нам просто нужно запустить этот цикл бинарного поиска для 0,1, и если вы хотите до 0,01 и так далее…..
код для этого:-
public class SqureRoot { public static void main(String[] args) { int n = 40;// number whose square root we have to find int p = 3;// till how many number in decimal i want it(PRECISION) System.out.printf("%.3f", sqrt(n, p)); } // code for square root find static double sqrt(int n, int p) { int start = 0; int end = n; double root = 0.0; // binary search logic while (start <= end) { int mid = start + (end - start) / 2; if (mid * mid == n) { root = mid; return root; } if (mid * mid > n) { end = mid - 1; } else { start = mid + 1; } } double incr = 0.1; for (int i = 0; i < p; i++) { while (root * root <= n) { root += incr; } root -= incr; incr /= 10; } return root; } }
надеюсь, вам понравилась эта статья, пожалуйста, следите за моим блогом для получения более интересных статей.