Какое значение не может принимать квадрат числа
Перейти к содержимому

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

  • автор:

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

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

Квадратом Х называют произведение 2-х множителей, каждый из которых равен Х.

Обозначение квадрата осуществляется с помощью степени, то есть Х² читается «Х в квадрате».

Если говорить еще более простым языком, то квадратом можно назвать число, которое умножено само на себя. Таким образом, мы можем написать простейшую формулу вычисления Х 2 :

Почему вообще такое выражение называют квадратом X? Дело в том, что именно данной формулой выражают площадь квадрата, сторона которого равна X, то есть геометрически это значение можно представить в виде площади квадрата, имеющего целочисленную сторону.

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

10 2 = 10 ⋅ 10 = 100

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

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

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

Интерес представляет и числовая последовательность для квадратов целых чисел, являющихся неотрицательными (речь идет о последовательности A000290 в OEIS):

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

Нельзя не сказать и про график y=x², где представлены целые значения x на отрезке 1-25.

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

Квадратные числа

Если же говорить о натуральных числах из последовательности, упомянутой выше, в историческом контексте, то их всегда называли «квадратными». Квадратное числовое значение также называют полным либо точным квадратом, то есть целым значением, квадратный корень из которого можно извлечь нацело. К примеру, найти корень из 9 несложно (√9 = 3, т. к. 3 ⋅ 3 = 9). Не составляет проблем и вычислить корень из ста: (√100 = 10, ведь десять на десять равно сто).

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

Легко понять, что сто — это квадратное число, так как его можно записать в виде 10 ⋅ 10 , плюс оно может быть представлено, как было сказано выше, в качестве площади квадрата со стороной, равной десяти. Таким образом, можно сделать вывод, что квадратное число включено в категорию классических фигурных чисел, то есть чисел, которые мы можем представить в виде геометрических фигур. Но в эту тему углубляться пока не будем.

А что в программировании?

Теперь давайте посмотрим, как все это работает в программировании. Для примера возьмем такой язык программирования, как Java (кстати, статья о том, как выполнять возведение в степень в Java, уже была).

Напишем простой метод по возведению любых числовых значений в квадрат:

public class Main

static int square(int x)

public static void main(String[] args)

Вы можете воспользоваться любым онлайн-компилятором для проверки этого кода. Также никто не мешает вписать любое число вместо десяти.

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

Теперь воспользуемся простейшей программой для того, чтобы найти квадратный корень из 100:

public class Main

public static void main(String args[])

System.out.printf(«sqrt(%.2f) = %.2f%n», x, Math.sqrt(x));

Программа позволяет извлекать корень и из неквадратных значений. Ниже мы находим корень из 167:

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

Да, в современную эпоху калькуляторов мало кто считает в уме. Вдобавок ко всему, сегодня даже не надо покупать настоящий калькулятор, так как калькулятор есть в любом мобильном телефоне, не говоря уже об онлайн-калькуляторах, коих существует огромное количество. Однако это не значит, что можно забыть азы алгебры. Не зря же великий русский ученый Михаил Ломоносов когда-то сказал:

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

  • https://calculator888.ru/tablitsa-kvadratov;
  • http://www.for6cl.uznateshe.ru/kvadrat-chisla/;
  • https:/ru.wikipedia.org/.

Введение в задачи с параметром: решение уравнений с параметром

Мы привыкли, что в уравнении коэффициенты не меняются. Но возможно ли из одного уравнения составить бесконечное множество различных его вариантов? Узнаем об этом в статье.

Что такое параметр

Утром на термометре было некоторое количество градусов, которое мы обозначим за х. В обед температура воздуха изменилась в несколько раз. Во сколько раз должна была измениться температура воздуха, чтобы на термометре было 20 градусов?

Такие задачи достаточно легко решаются. Если бы изначально было пять градусов, то искомое число было бы равно \(\frac = 4\). А если было 10 градусов, то искомое число было бы равно \(\frac = 2\).

Но не все так просто. Мы не знаем, какой изначально была температура. Также мы не знаем, во сколько раз она изменилась. То есть мы получили уравнение с двумя неизвестными переменными.

Обозначим вторую переменную a, у нас получится уравнение вида ax=20. Только что введенная нами переменная «a» называется параметр.

Параметр — коэффициент при неизвестном или свободном члене. Параметр задается буквой, но является не переменной, а числом, которое мы не знаем.

То есть параметр — это еще одна переменная, которая может принять несколько значений.

Как решать уравнения с параметром, если у нас целых две (а то и больше) неизвестных переменных? Нужен иной подход, чем при решении обычного уравнения.

Решить уравнение с параметром — это найти такие числовые значения параметра, при которых условие выполняется.

Мы ищем не единственное значение параметра, а все возможные его значения для заданного условия.

Представьте, что вы играете в прятки и не знаете, кого ищете. Параметр a пусть будет местоположением прячущегося игрока x. Когда вы найдете значение параметра a, то есть место, где прячется игрок, тогда вы сможете найти и самого игрока и понять, кого нашли — нашли значение переменной x.

Мы разобрались с тем, что такое параметр и с чем его едят. Теперь научимся применять новые знания для решения линейных уравнений.

Линейные уравнения с параметром

Вернемся к нашей погоде. У нас получилось уравнение ax = 20. Как найти, сколько градусов было изначально? Разделить все уравнение на число a.

Какие значения может принимать параметр? Любые. Например, при \(a = 1 x = 20\).
При \(a = 2 x = 10\).
При \(a = 40 x = 0,5\).

Что, если \(a=0\)? Мы получаем уравнение \(x = \frac\), у которого нет решения, поскольку на 0 делить нельзя.

Если мы не будем преобразовывать изначальное уравнение, то получится \(0*x=20\), то есть уравнение не будет выполняться: какое бы число мы ни умножили на 0, получится 0.

Получается, решение есть при любых значениях a, кроме 0. Таким образом, мы и нашли ответ: при \(a = 0\) решений нет, при \(a \neq 0 — x = 20a\).

Добавим немного теории. Представим наше уравнение в виде \(ax = b\), где \(a, b\) — действительные числа. Рассмотрим несколько случаев.

Предположим, Пете необходимо в несколько раз увеличить скорость х, пробежать дистанцию и поставить рекорд. Чтобы поставить рекорд, он должен бежать со скоростью 15 км/ч — это и будет коэффициент b.

Получаем уравнение \(ax = 15\). Как найти начальную скорость Пети? \(x = \frac\).

Подобное уравнение мы уже решали выше. Получаем два случая:

  • Если a = 0 — решений нет.
  • Если a \(\neq\) 0, то изначальная скорость Пети была равна \(x = \frac\).

С какой бы скоростью ни бежал Петя, если ему нужно увеличить скорость в 0 раз, он все равно будет стоять на месте, поскольку \(0*x=0\). Даже если он изначально бегал со скоростью света, его скорость останется равна 0, а не 15 км/ч.

Мы получаем уравнение \(ax = 0\). Также разберем два случая значений параметра:

  • \(a = 0\). Мы получаем уравнение \(0 * x = 0\). Какое значение х нужно подставить, чтобы уравнение выполнялось?

Какое бы число мы ни умножили на 0, получим 0. Получаем бесконечное множество решений.

  • \(a \neq 0\). Здесь получается, что равен 0 уже х: \(x = \frac= 0\).

Подведем итог. Как можно решить уравнение вида \(ax = b\)?

— Если \(a = 0, b = 0\) — бесконечное множество решений.
— Если \(a = 0, b \neq 0\) — решений нет.
— Если \(a \neq 0, b \neq 0\) — решением будет \(x = \frac\).

Так, с линейными уравнениями понятно, а что там с квадратными?

Квадратные уравнения с параметром

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

Квадратное уравнение имеет вид ax 2 + bx + c = 0, а графиком функции y = ax 2 + bx + c будет парабола.

Как работать с такими уравнениями, если в них присутствует параметр? В первую очередь, важны рассуждения. Любое задание с параметром можно решить, проанализировав функцию.

Решение квадратного уравнения опирается на понятие дискриминанта. В зависимости от его значений может получиться разное количество корней:

  • При D > 0 уравнение имеет два корня.
  • При D = 0 уравнение имеет один корень.
  • При D < 0 уравнение не имеет корней.

Как это проверить на графике? Корни уравнения — это точки, в которых парабола пересекает ось абсцисс, то есть ось х.

Рассмотрим три уравнения.

1) x 2 — x — 2 = 0
Решим уравнение с помощью дискриминанта.
D = 1 2 — 4 * 1 * (-2) = 1 + 8 = 9
Поскольку дискриминант больше 0, то уравнение имеет два корня.

Проверим с помощью графика функции. Построим параболу и заметим, что она действительно дважды пересекает ось абсцисс, а координаты этих точек равны (−1; 0) и (2; 0) .

2) x 2 -4x + 4 = 0
Решим уравнение с помощью дискриминанта.
D = 16 — 4 * 1 * 4 = 16 — 16 = 0
Поскольку дискриминант равен 0, у уравнения всего один корень.

Проверим на графике. И действительно, парабола касается оси х только один раз в вершине, координаты которой (2; 0).

3) x 2 — 5x + 7 = 0
Решим уравнение с помощью дискриминанта.
D = 25 — 4 * 1 * 7 = 25 — 28 = -3

Поскольку дискриминант отрицательный, у уравнения нет корней. И это отлично видно, если посмотреть на график функции: парабола лежит выше оси х и никогда ее не пересечет.

Где можно применить эти знания, решая параметры?

Пример 1. Найдите все значения параметра a, при которых уравнение x 2 + (3a + 11)x + 18,25 + a = 0 имеет два различных решения.

Решение. Перед нами квадратное уравнение с коэффициентами b = 3a + 11, c = a + 18,25. В каких случаях это уравнение будет иметь два различных корня?

Квадратное уравнение имеет два корня, если D > 0. Нужно найти все значения параметра, при которых дискриминант будет положительным.

1. Для начала найдем сам дискриминант.
D = (3a + 11) 2 — 4 * 1 * (a + 18,25) = 9a 2 + 66a + 121 — 4a — 73 = 9a 2 + 62a + 48
D=9a 2 +62a+48

2. Поскольку дискриминант должен быть больше 0, то получаем неравенство 9a 2 + 62a + 48 > 0

9a 2 + 62a + 48 = 0
D = 3844 — 1728 = 2116
\(a_1 = \frac = -\frac = -\frac\)
\(a_2 = \frac = -\frac = -6\)

4. Дискриминант будет положительным при \(a \in (-\infty; -6) \cup (-\frac; +\infty)\). Это и будет ответ.

Ответ: \(a \in (-\infty; -6) \cup (-\frac; +\infty)\).

Важно: в уравнении мы указываем не сами решения уравнения, а значения параметра, при которых уравнение имеет два решения.

Пример 2. При каких значениях параметра a уравнение (2a + 1)x 2 — ax + 3a + 1 = 0 имеет два различных решения?

Решение. Этот пример похож на предыдущий, однако здесь есть одна важная особенность. Что произойдет с уравнением, если 2a+1 = 0?

Мы получим уравнение 0,5x — 0,5 = 0, то есть линейное уравнение. У уравнения будет всего одно решение, что уже не подходит под условие задачи.

1. Поскольку по условию должно быть 2 решения, мы получаем, что \(a \neq -0,5\).

2. Найдем дискриминант уравнения. Он должен быть строго больше 0, чтобы у уравнения было два решения.

D = a 2 — 4 * (2a + 1) * (3a + 1) = a 2 — 24a 2 — 20a -4 = -23a 2 — 20a — 4

3. Составим неравенство и решим его:

-23a 2 — 20a — 4 > 0
23a 2 + 20a + 4 < 0
23a 2 + 20a + 4 = 0
D = 400 — 4 * 23 * 4 = 400 — 368 = 32
\(a_1 = \frac> = \frac — 10>\)
\(a_2 = \frac> = \frac — 10>\)

4. Разложим уравнение на множители:

5. Получаем неравенство:

6.Тогда \(a \in (\frac — 10>; \frac — 10>)\). Вспомним, что \(a \neq -0,5\), следовательно, мы получаем ответ \(a \in (\frac — 10>; -0,5) \cup (-0,5; \frac — 10>)\).

Ответ: \(a \in (\frac — 10>; -0,5) \cup (-0,5; \frac — 10>)\)

Мы научились решать квадратные уравнения с параметром с помощью дискриминанта. А что там с теоремой Виета?

Теорема Виета

Дискриминант — не единственный способ решить квадратное уравнение. Обратимся к теореме Виета. Если нам дано уравнение ax 2 + bx + c = 0, то его корни можно найти с помощью следующей системы:

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

Пример 3. При каких значениях параметра a корни уравнения x 2 — 3ax — a(a — 1) = 0 удовлетворяют условию x1 = 5x2.

Решение. 1. Корни уравнения — это два различных числа. Значит, дискриминант должен быть строго больше 0:

D = 9a 2 — 4 * 1 * (-a 2 + a) = 9a 2 + 4a 2 — 4a = 13a 2 — 4a = a(13a — 4)

Получаем неравенство a(13a — 4) > 0, следовательно, \(a \in (-\infty; 0) \cup (\frac; +\infty)\).

2. По теореме Виета найдем корни уравнения:

5. Мы нашли значения параметра, при которых выполняется условие. Осталось проверить, чтобы при этих значениях у уравнения было два корня.

a = 0 не подходит, поскольку ограничение \(a \in (-\infty; 0) \cup (\frac; +\infty)\) не включает точку 0.

\(a = \frac\) подходит, поскольку \(\frac > \frac\).

Ответ: \(a = \frac\)

Теперь перейдем к условиям, которые могут накладываться на корни квадратного трехчлена.

Условия на корни квадратного трехчлена

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

1. Корни квадратного трехчлена меньше, чем число N.

Построим параболу. Вспомним, что ветви параболы могут быть направлены или вверх, или вниз.

Если ветви параболы направлены вверх. Отметим на оси х точку N так, чтобы она лежала правее обоих корней уравнения. Так мы зададим условие, что корни уравнения меньше, чем число N.

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

Пусть в точках, где парабола пересекает ось х, будут привалы на экскурсионном маршруте, а в точке N будет смотровая площадка.

Что можно сказать про смотровую площадку на этой карте? Она находится выше, чем привалы, и лежит правее, чем самая низкая точка рельефа.

Рассмотрим эти условия на графике. В точке N значение функции f(x) больше, чем в корнях уравнения. Более того, она лежит правее, чем вершина параболы, то есть ее абсцисса больше абсциссы параболы.

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

В этом случае на нашем экскурсионном маршруте смотровая площадка будет лежать до привалов.

А если значение функции в точке N будет меньше, чем в корнях уравнения? Точка N будет лежать между ними.

В этом случае смотровая площадка окажется между привалами.

Аналогичным способом можно проследить изменение условий при любом положении точки N на графике.

Для того чтобы оба корня квадратного трехчлена ax 2 + bx + c были меньше, чем число N, необходимо и достаточно выполнение следующих условий:

Что произойдет, если ветви параболы будут направлены вниз? Наш экскурсионный маршрут немного поменяется: появится гора, а не овраг.

Где теперь располагается смотровая площадка? Она будет ниже, чем привалы, и дальше, чем самая высокая точка горы.

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

Для того чтобы оба корня квадратного трехчлена ax 2 + bx + c были меньше, чем число N, необходимо и достаточно выполнение следующих условий:

2. Корни квадратного трехчлена больше, чем число N.

Рассуждаем так же, как и в предыдущей функции, однако теперь точка N перемещается левее параболы.

Если ветви параболы направлены вверх, то функция в точке N принимает большее значение, чем в корнях уравнения, а сама точка N будет лежать левее параболы.

Для того чтобы оба корня квадратного трехчлена ax 2 + bx + c были больше, чем число N, необходимо и достаточно выполнение следующих условий:

Теперь направим ветви параболы вниз. Значение функции в точке N будет меньше, чем в корнях уравнения.

Для того чтобы оба корня квадратного трехчлена ax 2 + bx + c были больше, чем число N, необходимо и достаточно выполнение следующих условий:

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

Достаточно начертить примерный график функции и расставить на оси х нужные точки. Чтобы составить систему, необходимо:

В итоге должна получиться система, с помощью которой можно решить задачу.

Это все, конечно, здорово, но как быть с иррациональными уравнениями?

Иррациональные уравнения с параметрами

Иррациональные уравнения с параметрами совсем не сложные, поэтому перейдем сразу к практике.

Давайте разберем эту тему на примере, который может попасться на ЕГЭ по профильной математике в задании №18.

Задание. Найдите значение параметра a, при котором уравнение имеет ровно один корень.
\(\sqrt = x — a\)

Решение. Сначала возведем обе части уравнения в квадрат, чтобы избавиться от корня:

Заметим, что справа у нас формула квадрата разности:

Раскроем скобки справа, используя эту формулу:

x — 2 = x² — 2ax + a²

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

x² — 2ax + a² — x + 2 = 0

Объединим подобные члены:

x² — (2a + 1)x + a² + 2 = 0

Мы получили обычное квадратное уравнение. Чтобы был ровно один корень, нам нужно, чтобы дискриминант был равен нулю. Коэффициенты уравнения при этом:

a = 1
b = -(2a + 1)
c = a² + 2

Дискриминант выглядит следующим образом:

D = (-(2a + 1))² — 4*1*(a² + 2) = 0

Решим это уравнение и найдем параметр а:

4a² + 4a + 1 — 4a² — 8 = 0
4a — 7 = 0
\(a = \frac\)

Ответ: \(a = \frac\)

Теперь перейдtм к последнему, самому интересному, — тригонометрии.

Тригонометрические уравнения, неравенства и системы уравнений с параметрами

Если вы забыли, что такое единичная окружность, синус, косинус, тангенс и котангенс, то можете это освежить в памяти, перечитав статью «Тригонометрическая окружность. Часть 1».

При решении тригонометрических уравнений можно использовать замену переменных, чтобы уравнение выглядело приятнее. Но важно помнить, что множество значений у синуса и косинуса ограничено: от -1 до 1.

Решим пример, который может попасться на ЕГЭ по профильной математике в задании №18.

Задание. Найдите все значения параметра a, при каждом из которых уравнение \(cos^4x — (a+3)cos^2x — (a+4) = 0\) имеет решение.

Решение. Для начала введем новую переменную: \(t = cos^2(x)\). Заметим, что в таком случае у t есть ОДЗ: \(t \in [0, 1]\). Получаем:

Решим уравнение (*) отдельно. Найдем дискриминант:

\(D = (a+3)^2 — 4*(-(a+4)) = a^2 + 6a + 9+ 4a + 16\)

\(a^2 + 6a + 9+ 4a + 16 = a^2 +10a+25\)

Справа получилась формула квадрата суммы:

Теперь упростим уравнение с помощью этой формулы:

Так как дискриминант неотрицателен, чтобы у уравнения были решения, получаем:
\(t_1 =\frac< a + 3 + \sqrt> =\frac = a+4\)
\(t_2 =\frac< a + 3 — \sqrt<(a + 5)^2>> =\frac< a + 3 — a — 5> = -1\)

Теперь проверим получившиеся решения:
1. \(t = -1\) не подходит, так как не принадлежит промежутку [0; 1] из условия (**)
2. \(0\leq a + 4\leq 1\)
\(-4\leq a\leq -3\)

Последнее решение и является ответом.

Ответ. \(a\in [-4; -3]\)

Алгоритм для неравенств и систем уравнений примерно одинаковый. Посмотреть, как решать тригонометрические неравенства и системы уравнений можно в статье «Тригонометрические неравенства».

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

Термины

Коэффициенты — это числа, которые умножаются на переменные в уравнении.

Фактчек

  • Параметр — это переменная a, вместо которой можно подставить число. Решить уравнение с параметром — это найти такие числовые значения параметра, при которых условие выполняется.
  • При решении линейного уравнения ax=b в зависимости от значения коэффициентов может получиться несколько вариантов решений. Если a = 0, b = 0 — бесконечное множество решений. Если a = 0, b \(\neq\) 0 — решений нет. Если a \(\neq\) 0, b \(\neq\) 0 — решением будет \(x = \frac\).
  • При решении квадратного уравнения обязательно проверять коэффициент перед x 2 . Если коэффициент будет равен 0, то уравнение станет линейным.
  • При решении квадратного уравнения важно учитывать значение дискриминанта: если он строго больше 0, то корней у уравнения два, если дискриминант равен 0, то у уравнения один корень, если дискриминант меньше 0, то у уравнения нет корней.
  • Решить квадратное уравнение можно и с помощью теоремы Виета.
  • Если в задаче даны дополнительные условия на корни уравнения (например, они должны быть больше или меньше определенного числа), то задать их можно с помощью системы. Неравенства в системе можно составить с помощью анализа примерного графика функций.
  • Иррациональные уравнения с параметром удобнее всего решать путем возведения во вторую степень обеих частей уравнения.
  • В тригонометрических уравнениях с параметром нужно помнить про ОДЗ синуса и косинуса.

Проверь себя

Задание 1.
Что такое параметр?

  1. Это переменная a, вместо которой можно подставить число.
  2. Это коэффициент перед x 2 в квадратном уравнении.
  3. Это переменная х.
  4. Это значение функции в определенной точке.

Задание 2.
Дано уравнение ax = b. Сколько решений оно имеет, если a = 0 и b = 0?

  1. Решений нет.
  2. Одно решение.
  3. Бесконечное множество решений.
  4. Невозможно определить количество решений.

Задание 3.
При каких значениях дискриминанта уравнение будет иметь корни?

Задание 4.
Корни квадратного уравнения меньше числа А. Где будет лежать вершина параболы относительно точки А?

  1. Справа.
  2. Слева.
  3. Совпадать с точкой А.
  4. Невозможно определить расположение вершины.

Задание 5.
Меньший корень квадратного уравнения больше числа А, но меньше числа В. Ветви параболы направлены вниз. Чему будет равно значение функции в точке В?

  1. Значение функции в точке В будет меньше 0.
  2. Значение функции в точке В будет равно 0.
  3. Значение функции в точке В будет больше 0.
  4. Невозможно определить значение функции.

Ответы: 1. — 1; 2. — 3; 3. — 4; 4. — 2; 5. — 3.

Проверка, является ли число квадратом целого числа

Учитывая целое число, определите, является ли оно квадратным числом: В математике квадратное число или идеальный квадрат — это целое число, являющееся квадратом целого числа; другими словами, это произведение некоторого целого числа на самого себя. Примеры: -1: False, 0: True, 25 True | CodeWars Первый вариант решения проходит все тесты, но не проходит по времени:

if n ==0: return True else: for i in range(0,n): if i*i==n: return True else: return False 

Второй вариант не проходит 3 теста (на 3, 26 и секретный):

if n == 0: return True elif n 

Почему второй вариант не проходит данные тесты? Нужен вариант, который занимает мало времени (не попадёт под ошибку Execution Timed Out (12000 ms) , а также не используются библиотеки.

Отслеживать
задан 6 июл 2022 в 5:06
user507635 user507635
if n ** 0.5 == 1 Что вы тут проверяете? ��
6 июл 2022 в 5:11
Почему не просто что-нить типа if ( (int) (n ** 0.5) ) ** 2 == n ?
6 июл 2022 в 5:16

@Akina В питоне приводить к инту надо вызывая его как функцию, это не C# ) Но так то вопрос совершенно точный

6 июл 2022 в 5:17
Если у вас питон 3.8: return math.isqrt(n) ** 2 == n
6 июл 2022 в 6:05
(n**.5).is_integer()
6 июл 2022 в 6:26

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

Простейшее быстрое решение для любого целого числа - двоичный поиск для получения целой части квадратного корня и прямая проверка что его квадрат равен исходному числу:

def isqrt(n): low = 0 high = n + 1 # + 1 to process 0, 1 properly while low < high - 1: mid = (low + high) // 2 if n < mid ** 2: high = mid else: low = mid return low def is_square(n): return n >= 0 and isqrt(n) ** 2 == n 

Отслеживать
ответ дан 6 июл 2022 в 11:57
Stanislav Volodarskiy Stanislav Volodarskiy
34k 3 3 золотых знака 20 20 серебряных знаков 56 56 бронзовых знаков

Нет смысла делать цикл до n . Это примерно 100500 лишних операций в среднем. Если n равно 10001, то получится 9900 лишних итераций, ведь квадрат любого числа больше 100 уже больше 10000, так зачем их проверять. Нужно делать цикл до квадратного корня из n

if n == 0: return True else: for i in range(n + 1): i2 = i * i # квадрат очередного числа if i2 == n: return True elif i2 > n: # если квадрат больше n, то нет смысла проверять дальше break return False # тут я убрал else и перенес строчку на уровень выше. Разницы никакой нет, а читаемость улучшилась. 

Прибавление 1 позволяет убрать первую проверку на 0. Так что мы эту проверку лучше заменим на проверку отрицательных чисел:

if n < 0: return False else: for i in range(n + 1): i2 = i * i if i2 == n: return True elif i2 >n: break return False 

Отслеживать
ответ дан 6 июл 2022 в 7:36
26.7k 7 7 золотых знаков 32 32 серебряных знака 49 49 бронзовых знаков
Прежде чем я воспользуюсь функцией math.sqrt(), мне придётся совершить import, что запрещено.
– user507635
6 июл 2022 в 7:44
Ну сорян, в условиях этого не написано ��‍♂️
6 июл 2022 в 7:48
Да вообще непонятно, зачем нужен цикл, если можно просто взять корень и проверить, что он целый )
6 июл 2022 в 7:51

Дописал, а так же попробовал брать 2 - n, время сократилось на 0.04ms в тесте, но этого недостаточно.

– user507635
6 июл 2022 в 7:54
исправил на без квадратного корня
6 июл 2022 в 8:21

Приведу, как ответ, так как часто сам сталкиваюсь с таким в задачах, а в комментариях именно этого способа не вижу. Хотя, если у вас случай именно для простого возведения в степень, то здесь вариант ниже не поможет. А вот в ряде схожих случаев будет просто необходим. Спасибо @CrazyElf за очень ценный комментарий к первому варианту ответа.

Использование оператора возведения в степень ** и деления по модулю % (а они часто используются вместе, при хэшировании, например) обычно затратно по времени при больших числах. В этом случае лучше использовать встроенную функцию pow .

К примеру, в случае возведения трехзначного числа в трехзначную степень ** ещё работает быстрее, чем pow , а вот для четырехзначных - уже наооброт. См. пример ниже сделанный на моем (далеко не самом новом) ноуте.

import timeit import math print(timeit.timeit ('pow(5362, 2445)')) # 142 секунды print(timeit.timeit ('5362**2445')) # 147 секунд print(timeit.timeit ('(526 ** 252) % 10145')) # 2.87 секунды print(timeit.timeit ('pow(526, 252, 10145)')) # 0.90 секунд 

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

Примечание: Есть ещё pow в библиотеке math , но с ним вообще что-то странное. Например, pow(53, 244) считается без ошибок, а math.pow(53, 244) выдает OverflowError: math range error . Так что его тут не рассматриваю.

О диагонали квадрата

Введение в оборот комплексных чисел было далеко не первой революцией в понимании человеком природы числа. За две тысячи лет до этого мощнейшее потрясение испытал мир древнегреческой математики.

Неприятности у пифагорейцев начались далеко не сразу. Основанная Пифагором научная школа в итоге кончила плохо, но сегодняшний рассказ не о том бодром погроме, который был учинен над пифагорейцами благодарным за просвещение народом, а в большей степени о духовных перипетиях.

Термин «научная школа» по отношению к организации, основанной Пифагором, является эдаким эвфемизмом. Здраво взглянув на ее структуру и применяемые технологии, пифагореизм следует смело отнести к тоталитарным культам, что было вполне в духе времени (впрочем, это всегда в духе времени, вечная классика). Наличествовало и разделение на степени посвящения, и сложная система ритуалов с запретами (например, общеизвестные, вроде «не есть бобов» или «не откусывать от целой булки»), и сложное философское вероучение. Привет Рону Хаббарду сотоварищи. Ничто не ново под Луной.

В целом, при жизни Пифагора его «школа» была солидным предприятием, к тому же обладающим значительным и все время растущим политическим влиянием.

Вообще, философия Пифагора оказала значительное влияние на западную культуру (и на нас в том числе). Многие идеи нашли свое развитие в классической греческой философии, а уже про теорему Пифагора знают вообще все. Выражение «гармония сфер», кстати, также восходит к пифагорейцам.

Одним из существенных элементов их философии была идея, что любое число можно представить как отношение двух целых чисел, то бишь в виде простой дроби. В этом они, в том числе, видели совершенство природы числа. Больше того, это представлялось вполне очевидным. В современной математике такие числа называются рациональными, а их множество обозначается знаком . Сделайте теперь паузу на несколько секунд, задумайтесь, откуда вообще следует, что это не так? Можете ли вы привести аргумент, который был бы достаточно убедителен для древнего грека? Ну или, хотя бы, достаточно убедителен для себя, лично?

В общем, мир чисел был прост, изящен, и все были довольны. Источником возникших неприятностей, неожиданно, стала уже помянутая теорема, носящая имя Пифагора: одно из важнейших, дошедших до нас, его достижений. К сожалению, доказательство самого Пифагора нам неизвестно. Самое старое из дошедших до нас — приведено в «Началах» Евклида и датируется 3 в. д.н.э. Напомню, сам Пифагор жил в 6 в. д.н.э.

Фрагмент из Vatican Manuscript Number 190, датируемого 10 в. н.э. (целиком здесь):

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

Однако, вернемся к пифагорейцам.

Вот представьте себе простейшую вещь: квадрат со сторонами единичной длины. Если обозначить длину его диагонали , то по теореме Пифагора получим:

Само-то по себе это еще не проблема. С точки зрения пифагорейцев, дальше просто нужно было найти целые числа и , такие что

Вот на этом-то «простом» моменте все и застопорилось. Причем наглухо. Стопор сей продолжался до тех пор, пока один умник (как утверждают, Гиппас из Метапонта, тоже пифагореец), не доказал, внезапно, что таких чисел не существует. Все зло от шибко умных идет, как известно. По легенде, это научное достижение столь потрясло коллег, что, в ознаменование признания научных заслуг, Гиппаса не медля вышвырнули за борт корабля, на котором он в момент своего математического озарения плыл. А вот нечего было гадить уважаемым людям, подрывать основы столь любовно выпестованной и весьма доходной философской системы.

Ныне, числа не представимые в виде отношения двух целых, называются иррациональными.

Некоторое время пифагорейцы даже держали факт иррациональности в секрете. Однако, шила в мешке не утаишь, и правда довольно быстро (по историческим меркам) нашла путь наружу.

Доказать иррациональность совсем не сложно.
Пусть существуют такие , что

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

Таким образом, — четное число. Но тогда и — четное.

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

Но это означает, что — четно, а значит четно и . Противоречие.

Число невозможно представить в виде отношения двух целых чисел.

Остается добавить, что — это вовсе не какой-то странный уродец. Можно показать, что иррациональных чисел больше, чем рациональных, принципиально больше. Кстати, отношение больше-меньше в мире бесконечных множеств само бывает весьма контритуитивным. Но это уже другая история.

PS. Пользуясь случаем, поздравляю хабровчан с наступающими. Удачи в новом году!

UPD. В связи с разгоревшейся в комментариях дискуссией хочу заметить следующее: если по-честному, то рациональные числа вводятся как поле частных кольца целых чисел. Использовать ли в качестве мультипликативной системы множество или множество — сугубо дело вкуса, никак не влияющее на результат. Вопрос же, какое из школьных псевдоопределений «верно», решается министерством образования, и к математике этот процесс имеет весьма отдаленное отношение.

  • математика
  • история математики
  • иррациональные числа

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *