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

Квадрат числа в математике и программировании Полезное

Квадрат числа — это результат умножения числа само на себя. Для числа x его квадрат записывают как x в степени 2 (x²) и вычисляют по формуле x² = x · x. Например, квадрат пятерки равен 25, потому что 5 · 5 = 25.

Ниже разберем, что такое квадрат числа с точки зрения математики, почему он никогда не бывает отрицательным, и как возвести число в квадрат в коде: через умножение, оператор степени и функцию pow. Отдельно покажу две частые ошибки — со знаком минуса и с битовым сдвигом.

Что такое квадрат числа

Квадрат — это частный случай возведения в степень: степень равна 2. Чтобы возвести число в квадрат, его берут множителем дважды и считают произведение:

  • 3² = 3 · 3 = 9
  • 10² = 10 · 10 = 100
  • 1.5² = 1.5 · 1.5 = 2.25

Название «квадрат» пришло из геометрии: если у квадрата сторона равна x, то его площадь равна x · x. Поэтому x² можно представить как площадь квадрата со стороной x. Возводить в квадрат можно любые числа — целые, дробные и отрицательные, не только натуральные.

Квадрат отрицательного числа: важное свойство

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

  • (-3)² = (-3) · (-3) = 9
  • (-0.5)² = (-0.5) · (-0.5) = 0.25
  • 0² = 0

Отсюда следствие: два разных числа могут иметь один и тот же квадрат. И у 3, и у -3 квадрат равен 9. Это важно помнить, когда по квадрату восстанавливают исходное число: квадратный корень из 9 дает 3, но уравнение x² = 9 имеет два решения — 3 и -3.

Полные квадраты и квадратный корень

Полный (точный) квадрат — это целое число, которое равно квадрату другого целого числа. Иначе говоря, из него извлекается целый квадратный корень. Первые полные квадраты образуют последовательность:

0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100

Например, 100 — полный квадрат, потому что 10² = 100 и √100 = 10. А 50 полным квадратом не является: √50 — это примерно 7.07, целого корня нет.

Возведение в квадрат и извлечение квадратного корня — взаимно обратные операции для неотрицательных чисел: сначала возводим 6 в квадрат и получаем 36, затем берем корень из 36 и снова получаем 6.

Как возвести число в квадрат в Python

В Python есть три способа получить квадрат, и все они дают одинаковый результат для целых чисел:

x = 6
print(x * x)      # умножение
print(x ** 2)     # оператор степени
print(pow(x, 2))  # встроенная функция pow

Вывод:

36
36
36

Разница между способами тонкая, но ее стоит знать при выборе:

Способ Что делает Когда применять
x * x прямое умножение простой и наглядный вариант для квадрата
x ** 2 оператор возведения в степень когда степень может меняться (2, 3, n)
pow(x, 2) встроенная функция то же, что **; есть форма pow(x, 2, m) для остатка по модулю

Отдельно есть math.pow — но он всегда возвращает число с плавающей точкой, а не целое:

import math

print(pow(5, 2))       # встроенный pow: целое
print(5 ** 2)          # оператор: целое
print(math.pow(5, 2))  # math.pow: float

Вывод:

25
25
25.0

Для целочисленных расчетов, где важна точность (например, счетчики или индексы), берут x * x или x ** 2: они возвращают точное целое. math.pow уводит результат в тип float и на очень больших числах может потерять точность.

Частая ошибка: минус и оператор степени

С оператором ** легко ошибиться из-за приоритета операций. В Python возведение в степень выполняется раньше, чем унарный минус. Поэтому -3 ** 2 читается как «минус (3 в квадрате)», а не как «(минус три) в квадрате».

Неверно (если хотели получить квадрат числа -3):

print(-3 ** 2)  # ожидали 9

Фактический вывод:

-9

Сначала вычисляется 3² = 9, и только потом применяется минус, получается -9. Если же отрицательное число уже лежит в переменной, все считается верно, потому что скобки минусу не нужны:

n = -3
print(n ** 2)  # тут переменная, знак уже внутри значения

Вывод:

9

Исправление для литерала — явные скобки вокруг отрицательного числа:

print((-3) ** 2)

Вывод:

9

Правило простое: когда возводите в квадрат отрицательный литерал, всегда ставьте скобки — (-3) ** 2.

Возведение в квадрат в C++

В C++ квадрат тоже чаще всего считают обычным умножением. Функция std::pow из заголовка <cmath> работает через числа с плавающей точкой:

#include <iostream>
#include <cmath>

int main() {
    int x = 12;
    long long sq = (long long)x * x;  // точное целое
    double sq_pow = std::pow(x, 2);   // через плавающую точку
    std::cout << sq << " " << sq_pow << std::endl;
    return 0;
}

Вывод:

144 144

Для целых чисел предпочтителен вариант x * x: он не связан с плавающей точкой и не округляется. У std::pow результат имеет тип double, и при обратном приведении к целому на больших значениях возможна потеря точности (конкретное поведение зависит от компилятора и платформы). Приведение (long long)x * x защищает от переполнения int, если x достаточно велик.

Битовый сдвиг: почему им нельзя возвести в квадрат

Иногда возведение в квадрат путают с битовым сдвигом. Это разные операции. Сдвиг влево на n позиций умножает число на 2 в степени n, а не возводит его в квадрат.

Выражение 1 << n дает степень двойки: 2 в степени n. Например, 1 << 5 — это 32. А x << 1 умножает x на 2 (удвоение), а не возводит в квадрат:

x = 6
print(x << 1)  # надеялись на 36

Фактический вывод:

12

Получилось 12, потому что сдвиг на одну позицию — это просто умножение на 2. Для квадрата нужно умножение:

x = 6
print(x * x)  # квадрат

Вывод:

36

Битовый сдвиг помогает только в узком случае — когда сама база является степенью двойки. Тогда квадрат степени двойки — это опять степень двойки: (2 в степени k), возведенное в квадрат, равно 2 в степени 2k.

k = 5
p = 1 << k           # 2 в степени 5
print(p)             # значение p
print(p * p)         # квадрат через умножение
print(1 << (2 * k))  # то же значение через сдвиг

Вывод:

32
1024
1024

Вывод раздела: возвести в квадрат произвольное число битовым сдвигом нельзя. Сдвиг умножает и делит на степени двойки, а квадрат считают умножением x * x или оператором степени.

Выводы

  • Квадрат числа — это число, умноженное само на себя: x² = x · x; квадрат 5 равен 25.
  • Квадрат любого действительного числа неотрицателен, поэтому у 3 и -3 квадрат одинаковый (9), а уравнение x² = 9 имеет два корня.
  • В Python квадрат дают x * x, x ** 2 и pow(x, 2) (все возвращают целое для целых), а math.pow возвращает float.
  • Для отрицательного литерала нужны скобки: -3 ** 2 равно -9, а (-3) ** 2 равно 9.
  • Битовый сдвиг умножает на степени двойки и квадрат числа не считает; x << 1 — это удвоение, а не возведение в квадрат.

Где применяется на практике

Возведение в квадрат встречается постоянно: в геометрии (площадь, теорема Пифагора), в статистике (дисперсия и метрика среднеквадратичной ошибки), в физике и в машинном обучении, где квадрат разности используют в функциях потерь. Понимание, чем x * x отличается от pow и от битового сдвига, экономит время на отладке и уберегает от ошибок точности.

Освойте тему на практике

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

Освойте тему на практике

Посмотреть, как объясняют такие темы преподаватели, и задать вопросы можно на открытых вебинарах Otus — они бесплатные и проходят регулярно.

Смежные темы: Как возводить в степень в Java, Как возвести матрицу в степень.

FAQ

Может ли квадрат числа быть отрицательным? Для действительных чисел — нет: квадрат всегда больше нуля или равен нулю. Отрицательный квадрат появляется только у мнимых чисел, например i² = -1, но это уже область комплексных чисел.

Чем ** отличается от math.pow в Python? Оператор ** и встроенная pow для целых аргументов возвращают целое число и сохраняют точность. math.pow всегда переводит результат в тип float, поэтому для целочисленных задач берут ** или x * x.

Как быстро проверить, является ли число полным квадратом? Извлечь квадратный корень и сравнить с ближайшим целым: если корень целый, число — полный квадрат. В Python для целых удобна функция math.isqrt: если math.isqrt(n) ** 2 == n, значит n является полным квадратом.

OTUS Журнал