Как в программировании найти корень числа

Квадратный корень в программировании вычисляется во многих языках программирования при помощи специальных функций. Но есть языки, в которых нет встроенных функций для извлечения корня, — тогда в них приходится «изворачиваться» собственными методами. Поэтому важно вспомнить, что такое корень числа, из курса математики, чтобы правильно его извлекать «собственными методами».

Квадратный корень из числа А — это некое число В, которое при умножении на само себя (возведение во 2-ю степень) дает число А. Все это можно выразить формулой: А=В2 или А=В*В.

Извлечением корня из числа А называют операцию по поиску числа В. Мы покажем, как это делается в нескольких языках программирования.

Извлечение корня в Java

При программировании на Java извлечение корня происходит при помощи класса «Math» и метода «static double sqrt(double a)». 

Как выглядит извлечение корня в коде:

public class TestSqrt {

 public static void main(String[] args) {

  int x = 9;

  double y = Math.sqrt(x);

  System.out.println(«Корень квадратный из числа » + x + » будет равен » + y);

 }

}

Запустив эту программу, мы получим следующий результат:

Корень квадратный из числа 9 будет равен 3

Извлечение корня в Python

Для вычисления квадратного корня в Python применяется функция «sqrt()», которая расположена в модуле «math».

Как извлечение корня выглядит в коде:

import math

number = 9

sqrt = math.sqrt(number)

print(«Корень квадратный из числа » + str(number) + » будет равен » + str(sqrt))

Запустив эту программу, мы получим следующий результат:

Корень квадратный из числа 9 будет равен 3

Есть еще один изящный способ извлечения корня на языке программирования Python — применить возведение в степень «0,5». Кстати, такой способ применим и в других языках программирования, где отсутствует функция для вычисления квадратного корня. Как это выглядит в коде:

number = 9

sqrt = number ** (0.5)

print («Корень квадратный из числа «+str(num)+» будет равен «+str(sqrt))

Запуск этой программы выдаст такой же результат, как и в первом случае:

Корень квадратный из числа 9 будет равен 3

Напомним, что символы «**» являются оператором возведения в степень.

Как извлечь квадратный корень в Си

Извлечь корень на С/С++ не сложнее, чем в предыдущих языках программирования, так как здесь для вычисления квадратного корня применяется такая же функция sqrt() из модуля «cmath». 

Как извлечение корня выглядит в коде:

#include <iosteram>

#include <cmath>

using namespace std;

int main()

{

    double y = 9, result;

    result = sqrt(y);

    cout < < “Корень квадратный из числа “ < < y < < “будет равен “ < < result < < endl;

return 0;

}

Запустив эту программу, мы получим следующий результат:

Корень квадратный из числа 9 будет равен 3

Заключение

Квадратный корень в программировании несложно вычислить, если язык программирования содержит стандартные функции и модули для того, чтобы осуществлять подобные вычисления. В других же случаях придется искать дополнительные методы, например, такой как возведение числа в степень 0,5.

There are various functions available in the C++ Library to calculate the square root of a number. Most prominently, sqrt is used. It takes double as an argument. The <cmath> header defines two more inbuilt functions for calculating the square root of a number (apart from sqrt) which has an argument of type float and long double. Therefore, all the functions used for calculating square root in C++ are:

Function

Datatype

sqrt

double

sqrtf

float

sqrtl

long double

The functions have been discussed in detail below:

A) double sqrt(double arg): It returns the square root of a number to type double. 

Syntax:

double sqrt(double arg)

CPP

#include <cmath>

#include <iomanip>

#include <iostream>

using namespace std;

int main()

{

    double val1 = 225.0;

    double val2 = 300.0;

    cout << fixed << setprecision(12) << sqrt(val1) << endl;

    cout << fixed << setprecision(12) << sqrt(val2) << endl;

    return (0);

}

Output

15.000000000000
17.320508075689

Time Complexity: O(√n)
Auxiliary Space: O(1)

Errors and Exceptions Associated with this Function: 

1. It is mandatory to give the argument otherwise, it will give an error no matching function for call to ‘sqrt()’ as shown below, 

CPP

#include <cmath>

#include <iostream>

using namespace std;

int main()

{

    double answer;

    answer = sqrt();

    cout << "Square root of " << a << " is " << answer

         << endl;

    return 0;

}

Output

prog.cpp:9:19: error: no matching function for call to ‘sqrt()’
     answer = sqrt();

Time Complexity: O(√n)
Auxiliary Space: O(1)

2. If we pass a negative value in the argument domain error occurs and the output will be the Square root of -a, which is -nan.

CPP

#include <cmath>

#include <iostream>

using namespace std;

int main()

{

    double a = -2, answer;

    answer = sqrt(a);

    cout << "Square root of " << a << " is " << answer

         << endl;

    return 0;

}

Output:

Square root of -2 is -nan

Time Complexity: O(√n)
Auxiliary Space: O(1)
B) float sqrtf(float arg): It returns the square root of a number to type float.

Syntax:

float sqrtf(float arg)

CPP

#include <cmath>

#include <iomanip>

#include <iostream>

using namespace std;

int main()

{

    float val1 = 225.0;

    float val2 = 300.0;

    cout << fixed << setprecision(12) << sqrtf(val1)

         << endl;

    cout << fixed << setprecision(12) << sqrtf(val2)

         << endl;

    return (0);

}

Output

15.000000000000
17.320508956909

Time Complexity: O(√n)
Auxiliary Space: O(1)
C) long double sqrtl(long double arg): It returns the square root of a number to type long double with more precision. 

Advantage of sqrtl function: When working with integers of the order 1018, calculating its square root with sqrt function may give an incorrect answer due to precision errors as default functions in programming language works with floats/doubles. But this will always give an accurate answer. 
Syntax:

long double sqrtl(long double arg)

Following is an illustration given below shows the exact difference when working with long integers with sqrt and sqrtl,
1) Using sqrt function:

CPP

#include <cmath>

#include <iomanip>

#include <iostream>

using namespace std;

int main()

{

    long long int val1 = 1000000000000000000;

    long long int val2 = 999999999999999999;

    cout << fixed << setprecision(12) << sqrt(val1) << endl;

    cout << fixed << setprecision(12) << sqrt(val2) << endl;

    return (0);

}

Output

1000000000.000000000000
1000000000.000000000000

Time Complexity: O(√n)
Auxiliary Space: O(1)

2) Using sqrtl function:

CPP

#include <cmath>

#include <iomanip>

#include <iostream>

using namespace std;

int main()

{

    long long int val1 = 1000000000000000000;

    long long int val2 = 999999999999999999;

    cout << fixed << setprecision(12) << sqrtl(val1)

         << endl;

    cout << fixed << setprecision(12) << sqrtl(val2)

         << endl;

    return (0);

}

Output

1000000000.000000000000
999999999.999999999476

Time Complexity: O(√n)
Auxiliary Space: O(1)

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

Last Updated :
13 Jun, 2022

Like Article

Save Article

Математические функции

Последнее обновление: 13.01.2023

Стандартная библиотека языка Си предоставляет ряд математических функций, которые определены в разных заголовочных файлах, но в основном
определены в файле math.h.

Степерь числа. pow

Функция pow(), определенная в заголовочном файле math.h, возвращает степень числа:

#include <stdio.h>
#include <math.h>

int main(void)
{
	printf("pow(2, 3) = %.fn", pow(2, 3));	// 2 в степени 3
	printf("pow(5, 2) = %.fn", pow(5, 2));	// 5 в степени 2
	return 0;
}

Стоит отметить, что эта функция возвращает число типа double.

Для возведения в степень чисел типа float и long double также определены функции powf() и powl() соответственно.

Округление числа. round

Функция round() округляет число до ближайшего целого. В качестве параметра она принимает число типа double:

#include <stdio.h>
#include <math.h>

int main(void)
{
	 double n1 = 3.14;
 	printf("round(%.2f) = %.2fn", n1, round(n1));	// round(3.14) = 3.00
	 double n2 = 3.49;
 	printf("round(%.2f) = %.2fn", n2, round(n2));	// round(3.49) = 3.00
	 double n3 = 3.5;
 	printf("round(%.2f) = %.2fn", n3, round(n3));	// round(3.50) = 4.00
	return 0;
}

Квадратный корень. sqrt

Функция sqrt() возвращает квадратный корень числа типа double:

#include <stdio.h>
#include <math.h>

int main(void)
{
	double n1 = 224;
 	printf("sqrt(%.f) = %.fn", n1, sqrt(n1));	// sqrt(224) = 15
	double n2 = 36;
 	printf("sqrt(%.f) = %.fn", n2, sqrt(n2));	// sqrt(36) = 6
	return 0;
}

Для получения квадратного корня числа float также есть функция sqrtf(), а для числа типа long double — функция sqrtl()

abs

Функция abs, определенная в файле «stdlib.h», возвращает абсолютное значение числа

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	int m = -15;
	int n = 24;

 	printf("abs(m) = %d n", abs(m));	// abs(m) = 15
 	printf("abs(n) = %d n", abs(n));	// abs(n) = 24
	return 0;
}

Для возвращения абсолютного значения чисел типов long и long long определены в «stdlib.h» функции labs и llabs
соответственно. Для получения абсолютного значения для числа типа float в файле math.h определена функция fasbs. Все эти функцию работают
аналогично abs()

Improve Article

Save Article

Like Article

  • Read
  • Discuss
  • Improve Article

    Save Article

    Like Article

    Given a number N, the task is to write a C program to find the square root of the given number N.

    Examples: 

    Input: N = 12 
    Output: 3.464102

    Input: N = 16 
    Output:

    Method 1: Using inbuilt sqrt() function: The sqrt() function returns the sqrt of any number N.

    Below is the implementation of the above approach:

    C

    #include <math.h>

    #include <stdio.h>

    double findSQRT(double N) { return sqrt(N); }

    int main()

    {

        int N = 12;

        printf("%f ", findSQRT(N));

        return 0;

    }

    Time complexity: O(logN), as the inbuilt sqrt() function take log(n)
    Auxiliary space: O(1) 

    Method 2: Using Binary Search: This approach is used to find the square root of the given number N with precision upto 5 decimal places. 

    1. The square root of number N lies in range 0 ≤ squareRoot ≤ N. Initialize start = 0 and end = number.
    2. Compare the square of the mid integer with the given number. If it is equal to the number, then we found our integral part, else look for the same in the left or right side of mid depending upon the condition.
    3. After finding an integral part, we will find the fractional part.
    4. Initialize the increment variable by 0.1 and iteratively calculate the fractional part upto 5 decimal places.
    5. For each iteration, change increment to 1/10th of its previous value.
    6. Finally, return the answer computed.

    Below is the implementation of the above approach:

    C

    #include <stdio.h>

    #include <stdlib.h>

    float findSQRT(int number)

    {

        int start = 0, end = number;

        int mid;

        float ans;

        while (start <= end) {

            mid = (start + end) / 2;

            if (mid * mid == number) {

                ans = mid;

                break;

            }

            if (mid * mid < number) {

                ans=start;

                start = mid + 1;

            }

            else {

                end = mid - 1;

            }

        }

        float increment = 0.1;

        for (int i = 0; i < 5; i++) {

            while (ans * ans <= number) {

                ans += increment;

            }

            ans = ans - increment;

            increment = increment / 10;

        }

        return ans;

    }

    int main()

    {

        int N = 12;

        printf("%f ", findSQRT(N));

        return 0;

    }

    Method 3: Using log2(): The square-root of a number N can be calculated using log2() as: 
     

    Let d be our answer for input number N, then  

    d = N^{frac{1}{2}}

    Apply log2() both sides 

    log2(d) = log2(N^{frac{1}{2}})

    log2(d) = {frac{1}{2}}*log2(N)

    d = 2^{{frac{1}{2}}*log2(N)}

    Therefore, 

    d = pow(2, 0.5*log2(n)) 

    Below is the implementation of the above approach:

    C

    #include <math.h>

    #include <stdio.h>

    double findSQRT(double N) { return pow(2, 0.5 * log2(N)); }

    int main()

    {

        int N = 12;

        printf("%f ", findSQRT(N));

        return 0;

    }

    Last Updated :
    23 Nov, 2022

    Like Article

    Save Article

    Квадратный корень из числа — это значение, которое при умножении само на себя дает исходное число. Каждое положительное число имеет два квадратных корня (то же значение с положительным и отрицательным знаками). Ниже приводится запись квадратного корня:
    √25 = ±5

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

    Математическое представление квадрата числа

    Все мы в детстве узнали, что, когда число умножается само на себя, мы получаем его квадрат. Также квадрат числа можно представить как многократное умножение этого числа. Попробуем разобраться в этом на примере.

    Предположим, мы хотим получить квадрат 5. Если мы умножим число (в данном случае 5) на 5, мы получим квадрат этого числа. Для обозначения квадрата числа используется следующая запись:
    52 = 25

    При программировании на Python довольно часто возникает необходимость использовать функцию извлечения квадратного корня. Есть несколько способов найти квадратный корень числа в Python.

    1. Используя оператор возведения в степень

    num = 25
    sqrt = num ** (0.5)
    print("Квадратный корень из числа "+str(num)+" это "+str(sqrt))
    

    Вывод:

    Квадратный корень из числа 25 это 5.0

    Объяснение: Мы можем использовать оператор «**» в Python, чтобы получить квадратный корень. Любое число, возведенное в степень 0.5, дает нам квадратный корень из этого числа.

    2. Использование math.sqrt()

    Квадратный корень из числа можно получить с помощью функции sqrt() из модуля math, как показано ниже. Далее мы увидим три сценария, в которых передадим положительный, нулевой и отрицательный числовые аргументы в sqrt().

    a. Использование положительного числа в качестве аргумента.

    import math
    num = 25
    sqrt = math.sqrt(num)
    print("Квадратный корень из числа " + str(num) + " это " + str(sqrt))
    

    Вывод: Квадратный корень из числа 25 это 5.0.

    b. Использование ноля в качестве аргумента.

    import math
    num = 0
    sqrt = math.sqrt(num)
    print("Квадратный корень из числа " + str(num) + " это " + str(sqrt))
    

    Вывод: Квадратный корень из числа 0 это 0.0.

    c. Использование отрицательного числа в качестве аргумента.

    import math
    num = -25
    sqrt = math.sqrt(num)
    print("Квадратный корень из числа " + str(num) + " это " + str(sqrt))
    

    Вывод:

    Traceback (most recent call last):
      File "C:wb.py", line 3, in 
        sqrt = math.sqrt(num)
    ValueError: math domain error

    Объяснение: Когда мы передаем отрицательное число в качестве аргумента, мы получаем следующую ошибку «math domain error». Из чего следует, что аргумент должен быть больше 0. Итак, чтобы решить эту проблему, мы должны использовать функцию sqrt() из модуля cmath.

    3. Использование cmath.sqrt()

    Ниже приведены примеры применения cmath.sqrt().

    а. Использование отрицательного числа в качестве аргумента.

    import cmath
    num = -25
    sqrt = cmath.sqrt(num)
    print("Квадратный корень из числа " + str(num) + " это " + str(sqrt))
    

    Вывод: Квадратный корень из числа -25 это 5j.

    Объяснение: Для отрицательных чисел мы должны использовать функцию sqrt() модуля cmath, которая занимается математическими вычислениями над комплексными числами.

    b. Использование комплексного числа в качестве аргумента.

    import cmath
    num = 4 + 9j
    sqrt = cmath.sqrt(num)
    print("Квадратный корень из числа " + str(num) + " это " + str(sqrt))
    

    Вывод: Квадратный корень из числа (4+9j) это (2.6314309606938298+1.7100961671491028j).

    Объяснение: Для нахождения квадратного корня из комплексного числа мы также можем использовать функцию cmath.sqrt().

    4. Использование np.sqrt()

    import numpy as np
    num = -25
    sqrt = np.sqrt(num)
    print("Квадратный корень из числа " + str(num) + " это " + str(sqrt))
    

    Вывод:

    ...
    RuntimeWarning: invalid value encountered in sqrt
    Квадратный корень из числа -25 это nan

    5. Использование scipy.sqrt()

    
    
    
    import scipy as sc
    num = 25
    sqrt = sc.sqrt(num)
    print("Квадратный корень из числа " + str(num) + " это " + str(sqrt))
    

    Вывод: Квадратный корень из числа 25 это 5.0.

    Объяснение: Как и функция sqrt() модуля numpy, в scipy квадратный корень из положительных, нулевых и комплексных чисел может быть успешно вычислен, но для отрицательных возвращается nan с RunTimeWarning.

    6. Использование sympy.sqrt()

    import sympy as smp
    num = 25
    sqrt = smp.sqrt(num)
    print("Квадратный корень из числа "+str(num)+" это "+str(sqrt))
    

    Вывод: Квадратный корень из числа 25 это 5.

    Объяснение: sympy — это модуль Python для символьных вычислений. С помощью функции sympy.sqrt() мы можем получить квадратный корень из положительных, нулевых, отрицательных и комплексных чисел. Единственная разница между этим и другими методами заключается в том, что, если при использовании sympy.sqrt() аргумент является целым числом, то результат также является целым числом, в отличие от других способов, в которых возвращаемое значение всегда число с плавающей точкой, независимо от типа данных аргумента.

    Заключение

    Наконец, мы подошли к завершению этой статьи. В начале мы кратко затронули использование квадратного корня в математике. Затем мы обсудили принципы внутреннего устройства функции извлечения квадратного корня и ее возможную реализацию. В завершении мы рассмотрели различные методы применения этой функции в Python.

    Понравилась статья? Поделить с друзьями:
  • Как найти плоскость в комнате
  • Как найти первую ногу на микросхеме
  • Колесо восьмеркой на машине как исправить
  • Как найти клопов в мебели
  • Как составить электронный балланс