Класс 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.

Позвольте мне сначала предложить алгоритм, а затем мы разберем его шаг за шагом.

  1. Начните с i=1, если i * i == n, тогда i – это квадратный корень из n, поскольку n – полный квадрат.
  2. если ii \› n, это означает, что квадратный корень должен лежать между (i-1, I) назовем их (низкий,высокий).
  3. Применить бинарный поиск в диапазоне (низкий,высокий). Найти серединусередину из (минимум,максимум):
  4. если midmid\==n, это означает, что мы предполагаем, что mid — это квадратный корень из n.
  5. если mid∗mid › n*, это означает, что сделанное нами предположение неверно. Это означает, что квадратный корень из n должен быть меньше среднего, поскольку любое значение больше среднего никогда не может удовлетворять условию**midmid\==н. Следовательно, мы попытаемся найти квадратный корень слева от середины, повторив шаг 3 для (low,mid)*.
  6. В противном случае mid∗mid‹n означает, что наше предположение неверно. Это означает, что квадратный корень из n должен быть больше среднего, поскольку любое значение меньше среднего никогда не может удовлетворить условию midmid\== п. Следовательно, мы попытаемся найти квадратный корень справа от 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;
    }
}

надеюсь, вам понравилась эта статья, пожалуйста, следите за моим блогом для получения более интересных статей.