Квадратный корень в программировании вычисляется во многих языках программирования при помощи специальных функций. Но есть языки, в которых нет встроенных функций для извлечения корня, — тогда в них приходится «изворачиваться» собственными методами. Поэтому важно вспомнить, что такое корень числа, из курса математики, чтобы правильно его извлекать «собственными методами».
Квадратный корень из числа А — это некое число В, которое при умножении на само себя (возведение во 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
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.464102Input: N = 16
Output: 4
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.
- The square root of number N lies in range 0 ≤ squareRoot ≤ N. Initialize start = 0 and end = number.
- 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.
- After finding an integral part, we will find the fractional part.
- Initialize the increment variable by 0.1 and iteratively calculate the fractional part upto 5 decimal places.
- For each iteration, change increment to 1/10th of its previous value.
- 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
Apply log2() both sides
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.