Модуль числа 0: Модуль числа, определение и свойства

Содержание

Модуль числа, определение и свойства

Определение модуля числа

Алгебра дает четкое определения модуля числа. Модуль в математике — это расстояние от начала отсчёта до точки координатной прямой, соответствующей этому числу.

Если мы возьмем некоторое число «a» и изобразим его на координатной прямой точкой «A» — расстояние от точки «A» до начала отсчёта (то есть до нуля, длина отрезка «OA») будет называться модулем числа «a».

Знак модуля: |a| = OA

Разберем на примере:

Точка «В», которая соответствует числу «−3», находится на расстоянии 3 единичных отрезков от точки 0 (то есть от начала отсчёта). То есть длина отрезка «OB» равна 3 единицам.

Число 3 (длина отрезка «OB») называют модулем числа «−3».

Обозначение модуля: |−3| = 3

Читают символы выше следующим образом: «модуль числа минус три равен трем».

Точка «С», которая соответствует числу «+4», находится на расстоянии четырех единичных отрезков от начала отсчёта, то есть длина отрезка «OС» равна четырем единицам.

Число 4 называют модулем числа «+4» и обозначают так: |+4| = 4.

Также можно опустить плюс и записать значение, как |4| = 4.

Свойства модуля числа

Давайте рассмотрим семь основных свойств модуля. Независимо от того, в какой класс перешел ребенок — эти правила пригодятся всегда.

1. Модуль числа — это расстояние, а расстояние не может быть отрицательным. Поэтому и модуль числа не бывает отрицательным:

2. Модуль положительного числа равен самому числу.

3. Модуль отрицательного числа равен противоположному числу.

  • |−a| = a, если a < 0

4. Модуль нуля равен нулю.

5. Противоположные числа имеют равные модули.

6. Модуль произведения равен произведению модулей этих чисел.

  • |a b| = |a| |b|, когда

a·b 0

или

−(a·b), когда a·b<0

7. Модуль частного равен частному от деления модуля числа числителя на модуль числа знаменателя: 

Геометрическая интерпретация модуля

Как мы уже знаем, модуль числа — это расстояние от нуля до данного числа. То есть расстояние от точки −5 до нуля равно 5.

Нарисуем числовую прямую и отобразим это на ней.

Эта геометрическая интерпретация используется для решения уравнений и неравенств с модулем. Давайте рассмотрим на примерах.

Решим уравнение: |х| = 5

Мы видим, что на числовой прямой есть две точки, расстояние от которых до нуля равно 5. Это точки 5 и −5. Значит, уравнение имеет два решения: x = 5 и x = −5.

Когда у нас есть два числа a и b, то их разность |a — b| равна расстоянию между ними на числовой прямой. Или длине отрезка АВ

Расстояние от точки a до точки b равно расстоянию от точки b до точки a, тогда |a — b| = |b — a|.

Решим уравнение: |a — 3| = 4 . Запись читаем так: расстояние от точки а до точки 3 равно 4. Отметим на числовой прямой точки, удовлетворяющие этому условию.

Уравнение имеет два решения: −1 и 7. Мы из 3 вычли 4 — и это один ответ, а также к 3 мы прибавили 4 — и это второй ответ.

Решим неравенство: |a + 7| < 4 .

Эту запись читаем так: расстояние от точки a до точки −7 меньше четырёх. Отмечаем на числовой прямой точки, удовлетворяющие этому условию:

Ответ в данном случае будет таким: (-11; -3).

Решим неравенство: |10 − x| ≥ 7.

Расстояние от точки 10 до точки x больше или равно семи. Отметим эти точки на числовой прямой.

Ответ: ( -; 3] [17, +)

График функции

График функции равен y = |х|.

Для x 0 имеем y = x. 

Для x < 0 имеем y = −x. В результате получаем:

Этот график можно использовать при решении уравнений и неравенств.

Корень из квадрата

В контрольной или задаче ЕГЭ может встретиться задачка, в которой просят вычислить √a2 , где a – некоторое число или выражение.

При этом, √a2= |a|.

По определению арифметического квадратного корня √a2 — это такое неотрицательное число, квадрат которого равен a2 .  

Оно равно a, при а 0 и -а, при а < 0 , т. е. как раз |a|.

Модуль комплексного числа

У нас есть комплексное число, которое выглядит следующим образом: z=x+i·y, где x и y представляют собой действительную и мнимую части комплексного числа z (и являются действительными), а i — мнимая единица и равна √-1

Чему равен модуль числа в данном случае? Это арифметический квадратный корень из суммы квадратов действительной и мнимой части комплексного числа:

Свойства модуля комплексных чисел

  • Область определения: вся комплексная плоскость.
  • Область значений: [0;+∞).
  • Модуль как комплексная функция не дифференцируется ни в одной точке, так как условия Коши-Римана не выполнены.

Модуль рационального числа

Как найти модуль рационального числа — это расстояние от начала отсчёта до точки координатной прямой, которая соответствует этому числу.

Модуль рационального числа, примеры:

|-3,5| = 3,5

|0| = 0

Модуль вещественных чисел

  • Область определения: (−∞;+∞).
  • Область значений: [0;+∞).
  • Функция чётная.
  • Функция дифференцируется везде, кроме нуля. В точке x=0 функция претерпевает излом.

Модуль противоположного числа, нуля, отрицательного и положительного чисел

Исходя из свойств модуля, которые мы рассмотрели выше, получаем:

  • Противоположные числа имеют равные модули, то есть |- а| = |а| = a.
    Если посмотреть это относительно координатной прямой, то две точки, у которых координаты — это противоположные числа, располагаются на одном расстоянии от начала отсчета. То есть модули противоположных чисел одинаковы.
  • Модуль нуля равен нулю.
    |0| = 0, если a = 0
  • Для положительного числа модуль равен самомý числу, а для отрицательного – противоположному числу.
    |а| = — а
    |−a| = a

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

Запишите вашего ребенка на бесплатный пробный урок и начните заниматься уже завтра.

Модуль числа

Мóдуль числá a — это расстояние от начала координат до точки А(a).

Чтобы понять это определение, подставим вместо переменной a любое число, например 3, и снова прочитаем его:

Мóдуль числá 3 — это расстояние от начала координат до точки А(3).

То есть модуль это ни что иное как обычное расстояние. Давайте попробуем увидеть расстояние от начала координат до точки А(3)

Расстояние от начала координат до точки А(3) составляет 3 (три единицы или три шага).

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

Модуль числа 3 обозначается так: |3|

Модуль числа 4 обозначается так: |4|

Модуль числа 5 обозначается так: |5|

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

|3| = 3

Читается как «Модуль числа три равен три»

Теперь попробуем найти модуль числа −3. Опять же возвращаемся к определению и подставляем в него число −3. Только вместо точки A используем новую точку B. Точку A мы уже использовали в первом примере.

Модулем числа −3 называют расстояние от начала координат до точки B(−3).

Расстояние от одного пункта до другого не может быть отрицательным. Модуль это тоже расстояние, поэтому тоже не может быть отрицательным.

Модуль числа −3 равен 3. Расстояние от начала координат до точки B(−3) равно трём единицам:

|−3| = 3

Читается как «Модуль числа минус три равен три»


Модуль числа 0 равен 0, так как точка с координатой 0 совпадает  с началом координат. То есть расстояние от начала координат до точки O(0) равно нулю:

|0| = 0

«Модуль нуля равен нулю»

Сделаем выводы:

  • Модуль числа не может быть отрицательным;
  • Для положительного числа и нуля модуль равен самомý числу, а для отрицательного – противоположному числу;
  • Противоположные числа имеют равные модули.

Противоположные числа

Числа, отличающиеся только знаками называют противоположными.

Например, числа −2 и 2 являются противоположными. Они отличаются только знаками. У числá −2 знак минуса, а у числá 2 знак плюса, но мы его не видим, поскольку плюс как говорилось ранее, не записывают.

Еще примеры противоположных чисел:

−1 и 1

−3 и 3

−5 и 5

−9 и 9

Противоположные числа имеют равные модули. Например, найдём модули чисел −3 и 3

|−3| и |3|

3 = 3

На рисунке видно, что расстояние от начала координат до точек A(−3) и B(3) одинаково равно трём шагам.


Понравился урок?
Вступай в нашу новую группу Вконтакте и начни получать уведомления о новых уроках



Возникло желание поддержать проект?
Используй кнопку ниже

Навигация по записям

Модуль числа.

{2}}\Leftrightarrow \\xy>\left| x \right|\cdot \left| y \right|\Leftrightarrow \\xy>\left| xy \right|,\end{array}\)

а это противоречит определению модуля.

Следовательно, таких \( x;y\in \mathbb{R}\) не существует, а значит, при всех \( x,\text{ }y\in \mathbb{R}\) выполняется неравенство \( \left| x+y \right|\le \left| x \right|+\left| y \right|.\)

Примеры для самостоятельного решения:

1) Докажите свойство №6.

2) Упростите выражение \( \left| \frac{31}{8}-\sqrt{15} \right|+\left| \frac{15}{4}-\sqrt{15} \right|\).

Ответы:

1) Воспользуемся свойством №3: \( \left| c\cdot x \right|=\left| c \right|\cdot \left| x \right|\), а поскольку \( c>0\text{ }\Rightarrow \text{ }\left| c \right|=c\), тогда

\( \left| cx \right|=c\cdot \left| x \right|\), ч.т.д.

2) \( \left| \frac{31}{8}-\sqrt{15} \right|+\left| \frac{15}{4}-\sqrt{15} \right|\). {2}}\overset{<}{\mathop{\vee }}\,15\cdot 16\text{ }\Rightarrow \text{ }\)

\( \frac{15}{4}-\sqrt{15}\text{ }<0\text{ }\Rightarrow \text{ }\left| \frac{15}{4}-\sqrt{15} \right|=\sqrt{15}-\frac{15}{4}\).

Складываем значения модулей:

\( \displaystyle \left| \frac{31}{8}-\sqrt{15} \right|+\left| \frac{15}{4}-\sqrt{15} \right|=\frac{31}{8}-\sqrt{15}+\sqrt{15}-\frac{15}{4}=\frac{1}{8}=0.125\)

Модуль числа. Абсолютная величина | Математика

Модуль числа обозначается двумя вертикальными чертами, между которыми заключается число:

|-7|  —  модуль числа  -7.

Модуль числа — это абсолютная величина числа. Абсолютная величина — это неотрицательное число, удовлетворяющее условиям:

|x| = x,   если   x &ges; 0;

|x| = —x,   если   x < 0.

Следовательно, модуль числа – это положительное число или нуль.

Модуль на координатной прямой

Модуль числа — это расстояние от начальной точки до соответствующей точки на координатной прямой. Рассмотрим координатную прямую с точками  A  и  B:

Точка  A  соответствует числу  -5,  которое находится в пяти единичных отрезках от начальной точки, то есть длина отрезка  AO  равна  5. Так как модуль равен расстоянию от начала координат до точки, то модуль числа  -5  равен  5,  это можно записать так:

|-5| = 5.

Точка  B  соответствует числу  4,5,  значит длина отрезка  OB  равна  4,5. Следовательно, модуль числа  4,5  равен  4,5:

|4,5| = 4,5.

Точка  O  соответствует числу  0  и является начальной точкой, следовательно, модулем нуля будет нуль:

|0| = 0.

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

Свойства абсолютной величины

Абсолютной величиной нуля является число нуль.

Пример:

|+0| = |-0| = 0.

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

Пример:

|+2| = 2;   |+35| = 35   и т. д.

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

Пример:

|-10| = 10,

потому что  -(-10) = 10.

Модули противоположных чисел равны.

Пример:

|+7| = |-7| = 7,   |-5| = |+5| = 5.

Модуль числа | Презентация к уроку по математике (6 класс):

Слайд 1

Модуль числа Урок математики в 6 классе

Слайд 2

0 1 F N R L A Какие из данных точек имеют противоположные координаты? Назовите координаты точек, отмеченных на координатной прямой. Какие числа называются противоположными ? Среди данных чисел укажите пары противоположных чисел: Повторение

Слайд 3

Найдите значения выражения: -(-(-(-1))) -(-(-(-(-1)))) -(-(-1)) Найдите значения выражения: -(-с), если с=2,3 ; -4 ¼ -(-(-а)), если а = -12,3 ; 7 ½ Каким будет число –в, если в – отрицательное число ; в=0 ; в – число положительное .

Слайд 4

С помощью модели координатной прямой покажите, где расположены точки О(о), B(-3), C(5,8), D(-7.8)

Слайд 5

0 0,1 М О Д У Л Ь 0  1,5 0,8 Для того, чтобы узнать тему нашего урока, укажите число, противоположное данному , а во второй таблице найдите букву, соответствующую этому числу. 0,8 0  1,5 О Ь М Д Л У

Слайд 6

О 1 А В Какие координаты имеют точки А ,В и С? 4 -3 Чему равно расстояние(в единичных отрезках) от начала координат до точек А , В и С? С -5 Число 5 – называют модулем числа — 5 , число 3 – модулем числа -3, число 4 – модулем числа 4. Определение: Модулем числа а называется расстояние (в единичных отрезках) от начала координат до точки А(а).

Слайд 7

— 5 0 4 МОДУЛЕМ ЧИСЛА a НАЗЫВАЮТ РАССТОЯНИЕ (В ЕДИНИЧНЫХ ОТРЕЗКАХ) ОТ НАЧАЛА КООРДИНАТ ДО ТОЧКИ А( a ) . М В О 5 един. отр. | — 5|=5 4 един. отр. |4|=4 |0|=0 МОДУЛЬ ЧИСЛА НЕ МОЖЕТ БЫТЬ ОТРИЦАТЕЛЬНЫМ. ДЛЯ ПОЛОЖИТЕЛЬНОГО ЧИСЛА И НУЛЯ ОН РАВЕН САМОМУ ЧИСЛУ, А ДЛЯ ОТРИЦАТЕЛЬНОГО – ПРОТИВОПОЛОЖНОМУ ЧИСЛУ. ПРОТИВОПОЛОЖНЫЕ ЧИСЛА ИМЕЮТ РАВНЫЕ МОДУЛИ: |- a |=| a |

Слайд 8

Обозначение : Например : Чему равен модуль числа 0? Почему?

Слайд 9

1 4 2 — 1 4 2 = | 7 |= 7 | 0 , 25 |=0,25 |-1,6|=1,6 |- 7 |= 7 |0|=0 |1,6|=1,6

Слайд 10

Каким числом не может быть модуль числа? Чему равен модуль положительного числа? Чему равен модуль отрицательного числа? Чему равен модуль 0? |85|= 85 |-56|= 56 |0|= 0

Слайд 11

Даны числа: 4 и — 4; 94 и — 94; — 42 и 42 Как называются эти числа? Найдите модуль каждого из чисел. |4|=4 и |-4|=4 |94|=94 и |-94|=94 |-42|=42 и |42|=42 Сравните эти модули. Какой вывод можно сделать? | -а |=|a|

Слайд 12

Выполните самостоятельно ,а затем проверьте ответы: |81|=81 |-2 |=2 |1,3|=1,3 |-52|=52 |-5,2|=5,2 |0|=0 | |= |- |=

Слайд 13

Найдите координаты точек А,В,С, изображённых на числовой оси и запишите расстояние от точек до начала отсчёта, используя знак модуля О 1 5 -5 -2 3 В С А К |-5|=5 |-2|=2 |3|=3 |5|=5

Слайд 14

Выполните самостоятельно , а затем проверьте ответы: |3,7|=3,7 |315,6|=315,6 |-7,8|=7,8 |0|=0 |-200|=200 |- ½|=½ |4¾|=4¾

Слайд 15

Запишите все числа, имеющие модуль: а)26; |- 26 |= 26 | 26 |= 26 б) 5,7; |- 5,7 |= 5,7 | 5,7 |= 5,7 в) 3 ¼ ; |- 3 ¼|= 3 ¼ | 3 ¼|= 3 ¼ г) 0. | 0 |= 0

Слайд 16

Найдите значение выражения: |-8|-|-5| |-10|•|-5| |240| : |- 80 | | -710 | + |- 290 | = 8 — 5 = 3 = 10 •5 = 50 = 240 : 80 = 3 = 710 +290 = 1000

Слайд 17

Запишите числа в порядке возрастания их модулей: 6,4; -5,8; 3,9; -7,1; 0 0; 3,9; -5,8; 6,4; -7,1 Самостоятельно запишите числа в порядке убывания их модулей: 7,3; -4,5; 5,9; -8,1; 0 -8,1; 7,3; 5,9; -4,5; 0

Слайд 18

ВОПРОСЫ: Что называют модулем числа? Как обозначают модуль числа? Как найти модуль положительного числа или нуля? Как найти модуль отрицательного числа? Может ли модуль какого-нибудь числа быть отрицательным числом?

Урок математики в 6 классе по теме МОДУЛЬ ЧИСЛА (Е.В.Буцко, А.Г.Мерзляк, В.Б.Полонский)

04. 02. 2021 год

План-конспект урока
математики в 6 классе

Тема урока: Модуль числа

Цель 
урока:

  • Ввести определение модуля числа, обозначение
    модуля числа. Учить находить модуль числа.
  • Формирование у учащихся общеучебных умений,
    умения организовать себя, осуществлять самоконтроль, взаимоконтроль,
    самооценку.
  • Развитие и обогащение речи учащихся.

Задачи урока:


образовательные (формирование познавательных УУД):  

    научить в процессе реальной
ситуации использовать определения следующих понятий: «модуль числа», модуль
положительного и отрицательных чисел, модуль нуля. Научиться находить модуль
числа, систематизировать знания учащихся по теме «Модуль
числа»;


воспитательные (формирование коммуникативных и личностных УУД):
развивать
коммуникативные качества: умение слушать и вступать
в диалог, участвовать в коллективном обсуждении проблем; воспитывать
ответственность и аккуратность; воспитывать  чувство
ответственности, товарищества, взаимопонимания, уважительного отношения друг к
другу,  способствовать пониманию необходимости  интеллектуальных усилий для
успешного обучения, положительного эффекта  настойчивости для достижения цели;


развивающие (формирование регулятивных УУД)

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

Тип урока: урок открытия новых знаний

Формируемые результаты:

Предметные: Формировать умение находить модуль числа.

Личностные: Формировать ответственное отношение к обучению, готовность к
саморазвитию и самообразованию на основе мотивации к обучению и познанию

Метапредметные: Формировать умение видеть математическую задачу в контексте
проблемной ситуации.

Планируемые результаты: Обучающийся научится находить модуль числа.

Оборудование: компьютер, проектор, презентация, учебники

ХОД УРОКА:

I.                 
Организационный момент.

 

 -Здравствуйте,
ребята! Я рада приветствовать вас на нашем уроке, где вы узнаете много нового и
интересного. Вы должны быть внимательными и активными.


Сегодняшний урок я хотела бы начать со слов К. Э. Циолковского: “Сначала я
открывал то, что известно многим, затем то, что известно некоторым, а потом –
то, что неизвестно никому”.

На каждом уроке вы, ребята,
приобретаете новые знания, которые когда-то открыли великие математики.
Сегодня, согласно словам ученого К. Э. Циолковского, вы откроете то, что
известно многим. Знания, полученные сегодня, помогут вам в дальнейшем при
изучении многих тем не только в курсе математики, но и при изучении нового
курса, который называется алгебра.

II.
Актуализация знаний

Блиц-опрос:

— Что называется координатной прямой?

— Какие числа называются противоположными?

— Какое число является
противоположным самому себе?

— Какие числа называются целыми?

— Как иначе называются целые
положительные числа?

— Каждое ли натуральное число
является целым?

— Верно ли, что если число рациональное,
то оно является целым?

— Каждое ли целое число является
рациональным?

 

 Задание №1(слайд №2):

 Назовите координаты точек,
отмеченных на координатной прямой.

A(6), L
(4), P(1),
N
(-1), F
(-4)

 Какие из данных точек имеют
противоположные координаты?

L (4) и F
(-4)

 Среди данных чисел укажите пары
противоположных чисел:

 

Задание №2(слайд №3):

—  Назовите отрицательные,
положительные, натуральные,   дробные, целые, неположительные, неотрицательные
числа

III.
Постановка цели и задач урока. Мотивация учебной деятельности учащихся.

— Для того, что бы узнать тему
сегодняшнего урока, нужно разгадать ребус

(слайд 4)


Тема нашего сегодняшнего урока «Модуль числа»

(слайд 5)


Термин  «модуль»   ввел в 1806 году  
 французский   математик Жорж Аргон.  В переводе с латинского modulus – «мера» или
«размер».

— Запишем в тетради тему урока: Модуль числа.

— Какие цели мы поставим на этот урок?


Узнать, что такое модуль.


Научиться находить модуль.


Решать задания с модулем.

 

 (слайд №6):

Какие
координаты имеют точки А ,В и С?

Чему
равно расстояние(в единичных отрезках) от начала координат до точек А , В и С?

Определение: Модулем числа называют расстояние от
начала отсчета до точки, изображающей это число на координатной прямой.

 

(слайд №7):

Обозначение:

Например:

|5
|=5

|-5
|=5

|3
|=3

|-3
|=3

Чему
равен модуль числа 0? Почему?

|0
|=0

(слайд №8):

Каким числом не
может быть модуль числа?

Модуль
принимает только положительные значения.

Чему равен модуль
положительного числа? Приведи пример.

Чему равен модуль
отрицательного числа? Приведите пример

Чему равен модуль
0?

Т.о. Модуль
неотрицательного числа равен этому числу, модуль отрицательного числа равен
числу, противоположному данному
.

 

IV.
Первичное усвоение новых знаний

1.     (слайд
№9):

Даны числа: 4 и —
4;  94  и — 94;  — 42 и 42

Найдите модуль
каждого из чисел.

|4|=4        и   
|-4|=4

|94|=94    и   
|-94|=94

|-42|=42   и   
|42|=42

Сравните эти
модули.

какой вывод можно
сделать?

|-а|=|a|
— запишите в тетрадь.

2.      (слайд
№10):

Выполните
самостоятельно №894 из учебника, а затем проверьте ответы:

|2|=2                      
|17 1/7  |=17 1/7             |-129|=129                      

|-3|=3                   
  |-36|=36

|4,3|=4,3                 
|0|=0

|12,6  |=
12,6           |5 11/16  |= 5 11/16

Физкультминутка
(слайд 11):

А
сейчас немного отдохнем. Проведём «Математическую зарядку».

Давайте
встанем.

Сейчас
на слайде будут появляться числа и если число положительное – ученики поднимают
правую руку, если число отрицательное – левую, если 0, то надо подпрыгнуть.  
(7; -8,2; 0; 4,5; 0,1; -7/9; 0; -3; 67;-128; 0; 458, -59; )

V.
Первичное закрепление

1. (слайд №12):

Найдите координаты
точек А,В,С, К изображённых на числовой оси и запишите расстояние от точек до
начала отсчёта, используя знак модуля

|-5|=5    
|-2|=2      |3|=3      |5|=5

2.    
(слайд 13):

Выполнить
задание из учебника № 902 (1-4)  Один ученик выполняет это задание у доски.

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

1)   
5;   2) 7;   3) 2,5;   4) 0.

Самопроверка

 

3.    
 (слайд №14):

 Запишите все
числа, имеющие модуль:   а)26;    б)5,7;    в)3¾;    г)0

4.    
  (слайд
№15):

Найдите значение
выражения: (один обучающийся у доски)

|-8|-|-5| =

|-10|*|-5|=

|240|:|-80|=

|-710|+|-290| =

5.    
  Самостоятельная работа: (слайд №16)

1.                 
Найдите  значение выражения:

|1,7|+|-1,8|

|-2,9|-|-0,9|

|7,2|:|-0,6|

|-8,4|*|-1,5|

2.                
Сравните модули чисел:

5,6
 и  -5,8         

-3,8
 и 
0

-5/7 
и
  -5/12

 

VI.
Итог урока.

Какую тему сегодня
изучали?

Какие цели мы сегодня
ставили на уроке?

Какое определение модуля
мы с вами дали?

Каким числом не может
быть модуль числа?

Чему равен модуль положительного
числа?

Чему равен модуль
отрицательного числа?

Чему равен модуль 0?

 

VII.
Рефлексия

Оцените свою работу на уроке  (дети
поднимают сигнальные карточки)

«Я сегодня все понял»-знаком «+»

«Я сегодня нечего не понял» — знаком «-»

«Кое-что осталось не понятным»- числом 0     

VIII.
Домашнее задание. (Слайд №17)

§ 32, №896, 898, 915

 

 

Модуль числа

Модуль числа — это расстояние от этого числа до нуля на координатной прямой.

Модуль обозначается с помощью символа: | |.

  • Запись |6| читается как «модуль числа 6», или «модуль шести».
  • Запись |8| читается как «модуль 8-ми».
Модуль положительного числа равен самому числу. Например, |2| = 2.
Модуль отрицательного числа равен противоположному числу <=> |-3| = 3.
Модуль нуля равен нулю, то есть |0| = 0.
Модули противоположных чисел равны, то есть |-a| = |a|.

Для лучшего понимания

темы: «модуль числа» предлагаем воспользоваться методом ассоциаций.

Представим, что модуль числа — это баня

, а знак «минус» — грязь .

Оказываясь под знаком модуля (то есть в «бане») отрицательное число «моется»

, и выходит без знака «минус» — чистым .Модуль

В бане могут «мыться»

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

 


История модуля числа или 6 интересных фактов о модуле числа

1. Слово «модуль» произошел от латинского названия modulus, что в переводе обозначает слово «мера».
2. Ввел в обращение этот термин ученик Исаака Ньютона — английский математик и философ Роджер Котс (1682 – 1716).
3. Великий немецкий физик, изобретатель, математик и философ Готфрид Лейбниц в своих работах и трудах использовал функцию модуля, которую он обозначил mod x.
4. Обозначение модуля было введено в 1841 году немецким математиком
Карлом Вейерштрассом (1815 — 1897).
5. При написании модуль обозначается с помощью символа: | |.
6. Еще одной версии термин «модуль» был введен в 1806 году французским
математиком по имени Жан Робер Аргáн (1768 — 1822). Но это не совсем так.
В начале девятнадцатого века математики Жан Робер Аргáн (1768 — 1822)
и Огюстен Луи Коши (1789 — 1857) ввели понятие «модуль комплексного числа»,
который изучается в курсе высшей математики.


Решение задач на тему «Модуль числа»

Задача №1. Расположи выражения: -|12|, 0, 54, |-(-2)|, -17 в порядке возрастания.

Решение:

Для начала раскроем скобки и модули:

— | 12 | = — 12
| — ( — 2) | = 2

Далее осталось расположить числа: -12, 0, 54, 2, -17 в порядке возрастания. Получим следующее неравенство:

-17 < -12 < 0 < 2 < 54, что будет равносильно:
-17 < -|12| < 0 < | — ( — 2) | < 54.

Ответ: -17 < -|12| < 0 < | — ( — 2) | < 54.

Задача№2. Нужно расположить выражения: -|-14|, -|30|, |-16|, -21, | -(-9) |
в порядке убывания.

Решение:

Для начала раскроем скобки и модули:

— | — 14| = — 14
— |30| = -30
|-16| = 16
| -(-9) | = 9

Далее осталось расположить числа: -14, -30, 16, -21, 9 в порядке убывания. Получим следующее неравенство:

16 > 9 > -14 > — 21 > — 30 что будет равносильно:
|-16| > | -(-9) | > — | — 14| > — 21 > — |30|.

Ответ: |-16| > | -(-9) | > — | — 14| > — 21 > — |30|

Калькулятор по модулю

Форматы

Вы можете видеть операции по модулю над числами, выраженными одним из следующих

  • a по модулю n
  • a mod n (сокращенная версия)

Примеры математических задач

17 по модулю 3

  • 17 — 3 = 14
  • 14–3 = 11
  • 11–3 = 8
  • 8–3 = 5
  • 5–3 = 2

20 мод 5

  • 20 — 5 = 15
  • 15–5 = 10
  • 10–5 = 5
  • 5 — 5 = 0

Modulo: определение, принцип работы и практическое использование

— Руководство Автор: Корин Б. Арены , опубликовано 24 октября 2019 г.

Большинство людей не слышали о модульной арифметике или модификациях вне математических классов.

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

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

Что такое Modulo?

Модульная арифметика, иногда называемая арифметикой часов, является
вычисление, которое включает число, которое сбрасывается до нуля каждый раз, когда целое
число больше 1, которое является модом, достигнуто. Примером этого является
24-часовые цифровые часы, которые сбрасываются на 0 в полночь.

В математике модуль — это остаток или число, оставшееся после деления числа на другое значение. Modulo также называют «мод.

Стандартный формат для мода:
a mod n
Где a — значение, которое делится на n .

Например, вы вычисляете 15 по модулю 4. Когда вы делите 15 на 4, получается остаток.
15/4 = 3,75

Вместо десятичной формы (0,75), когда вы используете функцию mod в калькуляторе, остаток представляет собой целое число. В этом примере 15/4 = , остаток 3 , что также равно 15 = (4 * 3) + 3. Вот как рассчитать это вручную:

15 мод 4
15-4 = 11
11-4 = 7
7-4 = 3

Расчетный мод с отрицательным числом

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

Например, если у вас 340 mod 60 , остаток равен 40 .
Но если у вас -340 mod 60 , остаток будет 20 .

Почему это происходит? Mathforum.org объясняет, что с положительным числом, например 340, вычитаемое кратное на меньше абсолютного значения , что дает 40.

340 мод 60
340-60 = 280
280-60 = 220
220-60 = 160
160-60 = 100
100-60 = 40

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

Вот как решить mod с отрицательным числом:
a mod n is a / n = r (остаток)
Следовательно, a mod n = a — r * n

Обратите внимание: Когда мы вводим a / b в калькулятор, мы берем десятичную часть сгенерированного значения и округляем ее до следующего целого числа . Давайте сделаем это на примере ниже:

-340 mod 60
-340/60 = 5. 6, когда мы берем десятичную часть, она становится целым числом -6
= -340 — (- 6) * 60
= -340 — (- 360)
= 20

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

Кто создал модульную арифметику?

Согласно Британнике, концепция модульной арифметики использовалась древними цивилизациями, такими как индийцы и китайцы. Примером может служить китайская книга «Математическое руководство мастера Сунь» , которая датируется 300 годом нашей эры.

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

Карл Фридрих Гаусс и теория чисел

В западной математике немецкий математик и физик Карл Фридрих Гаусс
сделал первое систематическое изучение модульной арифметики.Гаусс рассматривается как один
из самых влиятельных фигур в современной математике.

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

В теории чисел ученые анализируют свойства естественных
числа, которые являются целыми числами, например -1, -2, 0, 1, 2 и т. д. Их
цель — обнаружить неожиданные математические закономерности и взаимодействия
между натуральными числами.

Britannica отмечает, что в модульной арифметике, где mod N ,
все числа (0, 1, 2,…, N — 1,) известны как остатки по модулю N . В
остатки складываются путем нахождения арифметической суммы чисел, а мод равен
вычитается из суммы как можно больше раз. Это уменьшает сумму до
номер M, , который находится между 0 и N — 1.

В свою книгу Гаусс включил обозначение с символом ≡,
который читается как «соответствует.”Вместо обычного символа = три
сегменты горизонтальной линии означают равенство и определение.

Например, если мы сложим сумму 2, 4, 3 и 7, сумма будет равна 6 (mod 10). Это 16 ≡ (мод 10). Это означает, что разделение 16 на 10 дает остаток 6. Аналогично, 16-10 = 6.

Другой пример, 13 ≡ 1 (мод. 12). Это означает, что 13, разделенное на 12, дает остаток 1. Точно так же 13 — 12 = 1.

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

Для практических применений мод особенно полезен для работы с
с течением времени.

Поскольку в сутках 24 часа, имеет смысл обратиться к
время в 24-часовом формате. Это принцип, лежащий в основе системы военного времени, начиная с
в полночь с 00:00 и окончание часа в 23:00 с 23:00.

Вместо 9 часов вечера они говорят 21:00. В
военные используют это для координации с базами и другим персоналом, находящимся в
разные часовые пояса. Более того, все пилоты (коммерческие или иные) используют 24-часовой
часы, чтобы избежать путаницы при перемещении между часовыми поясами.

Чтобы установить стандарт, пилоты и военные используют среднее время по Гринвичу (GMT), которое они также называют зулусским временем (Z). Например, когда пилоты сообщают, что самолет достигнет базы в 21:00 по Гринвичу, это означает, что он прибудет в 21:00 по Гринвичу.

Как это связано с модулем? Для проживающих
в одном часовом поясе важнее определять время, отделяя ночь от дня.
Вот почему 12-часовое стандартное время используется по модулю.

Вместо 1600 часов мы просто говорим 4 часа.В
12-часовое стандартное время использует mod 12 , так что 1600 часов становится 4 часа.

Когда мы назначаем встречи, это обычно понимают люди
значит 4 часа дня. Если не указано иное, встреча в 4 часа утра абсурдна,
если вы не работаете по ночам и не проводите онлайн-встречи с клиентами из других часовых поясов.

Организация книг, банковская информация и ставки жилищного кредита

Мод пригодится для организации большой информации. Книги
отслеживается с использованием модульной арифметики для расчета контрольных сумм по международному стандарту
номера книг (ISBN). В 2007 году 13-значная система номеров ISBN
(который ранее был 10) был введен, чтобы помочь производителям идентифицировать большие
объем книг.

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

Когда дело касается жилищного кредита, используется мод для сброса расчетов на новый период. Например, ипотека с регулируемой ставкой 5/6 (ARM) периодически сбрасывает процентные ставки каждые 6 месяцев.Мод используется для соответствующей корректировки ставок.

Криптография и компьютерное искусство

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

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

В криптографии,
коды написаны для защиты секретных данных. Криптографы используют мод в Диффи-Хеллмана
Обмен ключами при настройке SSL-соединений для шифрования веб-трафика.

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

Итог

Mod — математическая функция, которая позволяет нам измерить остаток в сумме. Мы используем эту фундаментальную концепцию всякий раз, когда определяем время.

Концепция модульной арифметики использовалась древними
Китайцы и индийцы веками. Но это было введено в западную
математики немецким ученым Карлом Фридрихом Гауссом, который также разработал
основы теории чисел.

Реальное использование мода включает в себя организацию ISBN и банковской информации, сброс ставок ARM, дизайн компьютерной графики и криптографию, которая помогает защитить личные данные.

Об авторе

Корин — страстный исследователь и автор финансовых тем, изучающий экономические тенденции, их влияние на население, а также то, как помочь потребителям принимать более мудрые финансовые решения. Другие ее тематические статьи можно прочитать на Inquirer.net и Manileno.com. Она имеет степень магистра творческого письма в Филиппинском университете, одном из ведущих учебных заведений в мире, и степень бакалавра коммуникационных искусств в колледже Мириам.

Оператор по модулю — Что такое натуральные числа

В модульной арифметике мы работаем только с целыми числами, а используемые операции — это сложение, вычитание, умножение и деление.Различия
между евклидовой (регулярной) и гауссовой (по модулю) арифметикой евклидова работает с бесконечным набором целых чисел, а гауссовский работает только с
конечный набор целых чисел.

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

Лучший способ описать модульную математику — использовать часы.

12-часовые часы работают с бесконечным набором целых чисел, то есть от 1 до 12. Эти числа идут по кругу и оборачиваются вокруг 12.
Это 12 модуль. После 12 часов он снова начинается с 1, поэтому, когда сейчас 13 часов, на самом деле это 1 час.

Математически мы представляем это как:

  • 13≅1 мод 12

    13≅1 мод 12

    (Когда вы делите 13 на 12, остаток равен 1)

    Это читается как,

    13 соответствует 1 модулю (или модулю) 12

  • 40≅2 мод 12

    (Когда вы разделите 40 на 12, остаток будет 2)

    Это читается как,

    40 сравнимо с 2 по модулю (или по модулю) 12

Оператор по модулю

«Операция по модулю» находит остаток от деления одного числа на другое (иногда называемый модулем).

Оператор по модулю (сокращенно мод) — это остаток от деления положительного числа на другое положительное число. Когда мы делим два положительных числа,
уравнение будет выглядеть так:

`A / B = X` текст (остаток)` Y`

Где,

A — дивиденды

B — делитель

X — частное

Y — остаток

Пример 1:

`9/2 = 4« текст (остаток) `1`

` 9` mod `2` =` 1`, потому что `9` деленное на` 2` оставляет частное `4` и остаток от `1`

Пример 2:

6/3 = 2 текст (остаток) 0

`6` mod` 3 = 0 `, потому что` 6` деленное на `3` оставляет частное` 2` и остаток `0`

Задача 1:


`2`

Пояснение:

Когда `8` делится на` 3`, остается остаток `2`

`8/3 = 2` текст (остаток)` 2`, где,

Первый `2` — это частное

Вторая «2» — это остаток или мод.

Задача 2:


`0`

Пояснение:

Когда `9` делится на` 3`, остается остаток `0`

`9/3 = 3« текст (остаток) `0`, где,

`3` — это частное

`0` — это остаток или мод

По модулю отрицательных чисел

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

По модулю или часто называемый «mod» представляет собой остаток от деления. В 1801 году Гаусс опубликовал книгу о модульной арифметике. Позже широко принятое математическое определение дал Дональд Кнут.

  mod (a, n) = a - n * этаж (a / n)
  

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

Но что делает модуль? Для чего его можно использовать при кодировании?

Ограничивающие границы

В программировании оператор по модулю (% или иногда mod ) часто используется для ограничения индекса границами массива или структуры данных с ограниченной длиной.

  значений = [3, 4, 5]
index = 5
value_at_index = значения [индекс% values. length]
  

Для вышеприведенного примера это означает 5 mod 3 = 2 , после определения 5 - этаж (5/3) * 3 = 2 .Это означает, что независимо от значения , которое имеет индекс , границы массива соблюдены.

Но так ли это на самом деле?

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

Язык 13 мод 3 -13 мод 3 13 мод -3 -13 мод -3

С 1 -1 1 -1

Перейти 1 -1 1 -1

PHP 1 -1 1 -1

ржавчина 1 -1 1 -1

Скала 1 -1 1 -1

Ява 1 -1 1 -1

Javascript 1 -1 1 -1

Рубин 1 2 -2 -1

Python 1 2 -2 -1

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

  int mod (a, b) {
  c = a% b
  return (c <0)? c + b: c
}
  

В качестве другого варианта вы также можете применить модуль по модулю дважды.

  int mod (a, b) {
  (((a% b) + b)% b)
}
  

Четное или нечетное

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

  bool is_odd (int n) {
    вернуть n% 2! = 0; // может быть 1 или -1
}
  

Но любой, кто когда-либо смотрел на уровень ниже C, отметит, что использование модуля по модулю в любом случае не обязательно лучшая реализация для is_odd . Умножение и особенно деление - одни из самых дорогих инструкций процессора. Если вы имеете дело с числами, основанными на 2, часто есть более быстрый способ.

  x% 2n == x & (2n - 1) // для n> 0
  

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

  x% 2 == x & 1
х% 4 == х & 3
х% 8 == х & 7
...
  

, что позволяет гораздо быстрее реализовать is_odd .

  bool is_odd (int n) {
    вернуть n & 1! = 0;
}
  

Вкратце

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

Более подробное обсуждение см. В статье в Википедии.

Присоединяйтесь к другим 1000 подписчикам.

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

Спасибо! Пожалуйста, проверьте свой почтовый ящик.

Извините, но что-то пошло не так.

Или подпишитесь на RSS-канал

Калькулятор по модулю [Примеры модификаций]

Этот калькулятор по модулю - удобный инструмент, если вам нужно найти результат операций по модулю. Все, что вам нужно сделать, это ввести начальное число x и целое число y , чтобы найти число по модулю r , согласно x mod y = r .Читайте дальше, чтобы узнать, что такое операции по модулю, как вычислить по модулю и как правильно использовать этот калькулятор.

Что такое операции по модулю?

Представьте себе часы, висящие на стене. Допустим, уже поздно - 23 часа. Вы задаетесь вопросом, во сколько вы проснетесь после 8 часов сна. Вы не можете просто прибавить 8 к 11, потому что нет такого времени, как 19 часов утра. Чтобы найти правильный ответ, вам нужно выполнить операцию по модулю (mod 12) - вы складываете эти два числа и продолжаете вычитать 12, пока не получите число меньше 12.В данном случае 7. Вы только что подсчитали, что проснетесь в 7 утра.

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

x mod y = r

истинно, если такое целое число q (называемое частным ) существует, тогда:

y * q + r = x .

В противном случае число r - это остаток от деления , где x - это делимое , а y - это делитель .

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

Что такое сравнение по модулю?

Два числа a и b считаются равными по модулю n , если их разность a - b целиком делится на n (поэтому (a - b) делится на n ).

Математически формула сравнения по модулю записывается как:

a ≡ b (мод. N)

и n называется модулем конгруэнции.

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

мод n = r

b мод n = r

, где r - общий остаток.

Итак, проще говоря - совпадение по модулю происходит, когда два числа имеют одинаковый остаток после одного и того же делителя, например:
24 по модулю 10 и 34 по модулю 10 дают тот же ответ: 4.Следовательно, 24 и 34 сравнимы по модулю 10.

Давайте посмотрим на другой пример:

9 ≡ 21 (мод. 6) ,

, потому что 21 - 9 = 12 делится на 6. Его также можно кратко записать как 6 | (21-9) . Или, что то же самое, 21 и 9 имеют одинаковый остаток, когда мы делим их на 6:

.

9 мод 6 = 3

21 mod 6 = 3

Как вычислить по модулю - пример

Рассчитать модуль вручную - несложная задача.Просто следуйте инструкциям ниже!

  1. Начните с выбора начального числа (перед выполнением операции по модулю). Допустим, 250. Это наши дивиденды.
  2. Выберите делитель. Возьмем 24. Операция, которую мы хотим вычислить, будет тогда 250 mod 24 ( 250% 24 , если используется другое соглашение).
  3. Разделите одно число на другое с округлением в меньшую сторону: 250/24 = 10 . Это частное. Кроме того, вы можете думать об этой операции как о целочисленном делении на - типе деления, при котором нам не важна дробная часть результата.
  4. Умножьте делитель на частное. Итак, в нашем примере это 10 * 24 = 240 .
  5. Вычтите это число из вашего начального числа (делимого). Здесь: 250 - 240 = 10 .
  6. Полученное число является результатом операции по модулю. Мы можем записать это как 250 mod 24 = 10 .

Как пользоваться нашим калькулятором модов? 10 mod 3 и другие примеры modulo

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

  1. Введите начальное число - делимое - в первое поле . Возьмем пример из предыдущего абзаца, поэтому введите 250.
  2. Введите делитель . В нашем случае 24.
  3. Тадааа! Наш калькулятор по модулю вернет вам результат - остаток! И это неудивительно, оно равно 10 - то же самое число, которое мы вычисляли ранее.

Ниже вы найдете несколько типичных запросов, касающихся модуля:

  • 1 mod 1 = 0 (поскольку mod 1 всегда 0)
  • 1 мод 2 = 1
  • 1 мод 3 = 1
  • 5 мод 2 = 1
  • 5 мод 3 = 2
  • 6 мод 3 = 0
  • 7 мод 3 = 1
  • 10 мод 3 = 1
  • 18 мод 3 = 0
  • 100 мод 3 = 1
  • 100 мод 7 = 2

Если вы не видите здесь тот, который хотите найти, воспользуйтесь нашим калькулятором по модулю!

Модульная арифметика

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

  • A ≡ B (мод. C)
  • Мод C = B мод C
  • C | (А - В)
  • A = B + K * C , где K - некоторое целое число

Мы также можем выполнять вычисления по модулю операций.

1. Модульное сложение и вычитание

(A + B) мод C = (A мод C + B мод C) мод C

(A - B) мод C = (A мод C - B мод C) мод C

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

  • А = 11, В = 7, С = 4

    (11 + 7) по модулю 4 = (11 по модулю 4 + 7 по модулю 4) по модулю 4

    левая часть уравнения: (11 + 7) mod 4 = 18 mod 4 = 2

    правая часть уравнения: (11 mod 4 + 7 mod 4) mod 4 = (3 + 3) mod 4 = 6 mod 4 = 2

Аналогично, вычисления аналогичны для вычитания.

2. Модульное умножение

(A * B) мод C = (A мод C * B мод C) мод C

Такое уравнение может быть полезно при работе с большими числами, и мы не можем сразу узнать модуль этого большого числа. Давайте посмотрим на тот же пример (A = 11, B = 7, C = 4) - можете ли вы найти результат 77 mod 4 на месте? 11 mod 4 и 7 mod 4 вычислить проще:

  • (11 * 7) по модулю 4 = (11 по модулю 4 * 7 по модулю 4) по модулю 4

    левая часть уравнения: (11 * 7) mod 4 = 77 mod 4 = 1

    правая часть уравнения: (11 mod 4 * 7 mod 4) mod 4 = (3 * 3) mod 4 = 9 mod 4 = 1

3.100 мод 3 = (1 * 1) мод 3 = 1

Для некоторых конкретных случаев существуют даже более быстрые методы модульного возведения в степень (если B - степень двойки). Если вы хотите прочитать о них и попрактиковаться в модульной арифметике, ознакомьтесь с отличным учебником от Khan Academy под названием «Что такое модульная арифметика?»

Неопределенность определения модуля

Слово modulo происходит от латинского слова modus , означающего меру. Обычно, когда мы используем слово по модулю , мы имеем в виду операцию по модулю , например, e.грамм. 11 по модулю 3 равно 2, поэтому нужно просто найти остаток. В строгом понимании, модуль означает:

.

По указанному модулю

или

A то же самое, что B по модулю C, за исключением различий, учитываемых или объясняемых C

Это определение, о котором мы писали в сравнении по модулю абзаца.

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

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

Percent - символ операции по модулю

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

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

Приложения Modulo

На первый взгляд они могут быть неочевидными, но существует множество применений модуло - от повседневной жизни до задач по математике и естествознанию!

  1. Самый очевидный и известный пример - так называемая арифметика часов 🕞.Это может быть добавление часов, как в объяснении по модулю выше, или минут, или секунд!
    Никто не скажет, что «у вас осталось 40 минут 90 секунд », верно? Единственный вариант - выполнить операцию по модулю и найти частное и остаток - 60 * 1 + 30 = 90 . 41 минута 30 секунд звучит намного лучше.

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

  • Контрольные цифры GTIN, UPC, EAN используются для подтверждения целостности штрих-кода. В формуле для контрольных цифр используется модуль 10.
  • Номера ISBN и ISSN , которые являются уникальными периодическими идентификаторами и идентификаторами книг, имеют модуль 11 или 10, а в формуле контрольной цифры применяется средний вес.
  • IBAN - Номера международных банковских счетов - используйте модуль 97, чтобы проверить, правильно ли клиент ввел номер.
  • NPI - Национальный идентификатор провайдера США использует операцию по модулю 10 для вычисления десятой цифры.

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

  • национальный идентификационный номер (например, в Исландии, Турции, Польше)
  • фискальный идентификационный номер (Испания)
  • идентификационный номер автомобиля (США)
  • и многие другие.
  1. Он применяется во многих научных областях, таких как компьютерная алгебра, криптография, информатика или простая школьная математика - как в алгоритме Евклида для вычисления наибольшего общего множителя.

  2. Modulo полезен, когда вам нужно что-то разделить. Примером из реальной жизни может быть разделение пиццы с друзьями или семьей.

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

Это как раз тот случай, когда можно использовать по модулю! 10 mod 3 = 1. Другими словами, 10, разделенное на 3, равняется 3, но остается 1 кусок 🍕. Это был не самый сложный пример, но мы надеемся, что вы видите полезность модуло.

Кстати , а вы видели нашу коллекцию калькуляторов пиццы? У нас есть удивительный калькулятор пиццы, который может помочь оценить, сколько пиццы вам нужно заказать, а также инструменты, помогающие сравнить размеры пиццы - если вы когда-нибудь задумывались, что лучше купить две пиццы среднего размера или одну большую, пиццу Калькулятор сравнения - беспроигрышный вариант.Также мы подготовили калькуляторы для тех, кто хочет испечь идеальную пиццу самостоятельно!

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

Развлечение с модульной арифметикой - лучшее объяснение

Читатель недавно предложил мне написать о модульной арифметике (также известной как «взятие остатка»). Я не особо задумывался об этом, но понял, что модуль по модулю чрезвычайно эффективен: он должен быть в нашем ментальном наборе инструментов рядом со сложением и умножением.

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

Нечетное, четное и тройное

Вскоре после обнаружения целых чисел (1, 2, 3, 4, 5…) мы поняли, что они делятся на две группы:

  • Четное: делится на 2 (0, 2, 4, 6 ..)
  • Нечетное: не делится на 2 (1, 3, 5, 7…)

Почему это различие важно? Это начало абстракции - мы замечаем свойства числа (например, четное или нечетное), а не только само число («37»).

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

  • Четный x Четный = Четный
  • Нечетный x Нечетный = Нечетный
  • Четное x Нечетное = Четное

Это общие правила - они действуют на уровне собственности. (Интуитивно у меня есть химическая аналогия, что «ровность» - это молекула, которую имеют некоторые числа, и ее нельзя удалить умножением.)

Но четный / нечетный - это очень специфическое свойство: деление на 2. А как насчет числа 3? Как насчет этого:

  • «Тройка» означает, что число делится на 3 (0, 3, 6, 9…)
  • «Throdd» означает, что вы не делится на 3 (1, 2, 4, 5, 7, 8…)

Странно, но работоспособно. Вы заметите несколько вещей: есть два типа тредда. Число вроде «4» находится на расстоянии 1 от тройки (остаток 1), а число 5 - от двух (остаток 2).

Быть «тройкой» - это еще одно свойство числа.Возможно, не так быстро, как четный / нечетный, но он есть: мы можем создавать правила вроде «три семь х три четверти = три четверти» и так далее.

Но это сходит с ума. Мы не можем постоянно придумывать новые слова.

Введите модуль

Операция по модулю (сокращенно «mod» или «%» на многих языках программирования) - это остаток при делении. Например, «5 mod 3 = 2» означает, что 2 - это остаток от деления 5 на 3.

Преобразуя повседневные термины в математические, «четное число» - это такое, где оно равно «0 по модулю 2», то есть имеет остаток 0 при делении на 2.Нечетное число - «1 mod 2» (остаток равен 1).

Почему это круто? Итак, наши «нечетные / четные» правила становятся такими:

  • Четный x Четный = 0 x 0 = 0 [четный]
  • Нечетный x Нечетный = 1 x 1 = 1 [нечетный]
  • Четный x Нечетный = 0 x 1 = 0 [Четный]

Круто, а? Довольно легко решить - мы преобразовали «свойства» в реальные уравнения и обнаружили некоторые новые факты.

Что такое четный x четный x нечетный x нечетный? Ну, это 0 x 0 x 1 x 1 = 0. На самом деле, вы можете увидеть, если есть четное умножение где-нибудь на , весь результат будет нулем ... я имею в виду даже :).

Математика часов

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

Например: 7:00 (am / pm не имеет значения). Где будет часовая стрелка через 7 часов?

грн. 7 + 7 = 14, но мы не можем показать «14:00» на часах. Значит, должно быть 2. Мы рассуждаем интуитивно и математически:

  • (7 + 7) mod 12 = (14) mod 12 = 2 mod 12 [2 - остаток от деления 14 на 12]

Уравнение «14 по модулю 12 = 2 по модулю 12» означает, что «14 часов» и «2 часа» выглядят одинаково в 12-часовых часах.Это конгруэнтных , обозначенных знаком тройного равенства: 14 ≡ 2 mod 12.

Другой пример: сейчас 8:00. Где будет большая рука через 25 часов?

Вместо того, чтобы прибавлять 25 к 8, вы можете понять, что 25 часов - это просто «1 день + 1 час». Итак, часы закончатся на 1 час вперед, в 9:00.

  • (8 + 25) по модулю 12 (8) по модулю 12 + (25) по модулю 12 ≡ (8) по модулю 12 + (1) по модулю 12 ≡ 9 по модулю 12

Вы интуитивно преобразовали 25 в 1 и добавили это к 8.

Забавное свойство: математика просто работает

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

Сложение / вычитание

Допустим, два раза на наших часах выглядят одинаково («2:00» и «14:00»). Если мы добавим к обоим одинаковые «x» часов, что произойдет?

Ну на часики меняют на столько же! 2:00 + 5 часов ≡ 14:00 + 5 часов - оба покажут 7:00.

Почему? Ну, нас никогда не волновали лишние «12:00», которые таскала с собой 14. Мы можем просто добавить 5 к двум остаткам, которые есть у обоих, и они продвинутся одинаково. Для всех совпадающих чисел (2 и 14) сложение и вычитание имеют одинаковый результат.

Умножение

Труднее увидеть, останется ли умножение прежним. Если 14 ≡ 2 (mod 12), можем ли мы умножить обе части и получить тот же результат?

Давайте посмотрим - что произойдет, если мы умножим на 3?

Ну, 2:00 * 3 ≡ 6:00. Но что такое «14:00» * 3?

Помните, 14 = 12 + 2. Итак, мы можем сказать, что

  • 14 * 3 = (12 + 2) * 3 = (12 * 3) + (2 * 3) по модулю 12

Первую часть (12 * 3) можно игнорировать! «12-часовое переполнение», которое несет 14, просто повторяется несколько раз.Но кого это волнует? В любом случае мы игнорируем переполнение.

При умножении имеет значение только остаток, который равен 2 часам для 14:00 и 2:00. Интуитивно вот как я вижу, что умножение не меняет отношения с модульной математикой (вы можете перемножить обе стороны модульного отношения и получить тот же результат). См. Ссылку выше для более строгих доказательств - это мои интуитивно понятные карандашные линии.

Использование модульной арифметики

А теперь самое интересное - чем полезна модульная арифметика?

Простые расчеты времени

Мы делаем это интуитивно, но неплохо дать этому название.Ваш рейс прибывает в 15:00. Задерживается на 14 часов. Во сколько он приземлится?

Ну, 14 ≡ 2 mod 12. Я думаю об этом как о «2 часа и переключение между утра и вечера», поэтому я знаю, что это будет «3 + 2 = 5 утра».

Это немного сложнее, чем простой оператор по модулю, но принцип тот же.

Размещение элементов в случайных группах

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

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

Нужны 3 группы? Разделите на 3 и возьмите остаток (также известный как мод 3). У вас будут группы «0», «1» и «2».

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

Выбор случайного предмета

Я использую модуло в реальной жизни. Действительно. У нас есть 4 человека, играющих в игру, и нам нужно выбрать кого-нибудь, кто будет первым. Сыграйте в мини-игру с модом N! Дайте людям номера 0, 1, 2 и 3.

Теперь все говорят: «Раз, два, три, стреляйте!» и выставляет случайное количество пальцев. Сложите их и разделите на 4 - тот, кто получит остаток, ходит первым.(Например: если сумма пальцев равна 11, тот, у кого было «3», ходит первым, так как 11 mod 4 = 3).

Это быстро и работает.

Выполнение задач в цикле

Предположим, что задачи должны выполняться по определенному расписанию:

  • Задача A выполняется 3 раза в час
  • Задача B выполняется 6 раз / час
  • Задача C выполняется 1 раз в час

Как сохранить эту информацию и составить расписание? В одну сторону:

  • Установить таймер, работающий каждую минуту (значение минут обозначается буквой «n»).
  • 3x / час означает каждые 60/3 = 20 минут.Таким образом, задача A запускается всякий раз, когда «n% 20 == 0»
  • Задача B запускается всякий раз, когда «n% 10 == 0»
  • Задача C запускается всякий раз, когда «n% 60 == 0»

О, вам нужна задача C1, которая выполняется 1 раз в час, но не в то же время, что и задача C? Конечно, пусть он запускается, когда «n mod 60 == 1» (все еще один раз в час, но не так, как C1).

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

Аналогично, при программировании вы можете распечатать каждый сотый элемент журнала, выполнив: if (n% 100 == 0) {print…}.

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

Поиск свойств номеров

Предположим, я сказал вам это:

Что можно быстро сделать? Что ж, «а» должно быть четным, поскольку оно равно чему-то, что подразумевает умножение на 2.

Если бы я также сказал вам:

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

Такие вещи, как «even», «threeven» и «mod n» являются свойствами, которые являются более общими, чем отдельные числа, и которые мы можем проверить на согласованность. Таким образом, мы можем использовать по модулю, чтобы выяснить, согласуются ли числа, не зная, что это такое!

Если я скажу вам это:

Можно ли решить эти уравнения с целыми числами? Посмотрим:

  • 3a + 5b = 8… давайте «mod 3 it»: 0 + 2b ≡ 2 mod 3, или b ≡ 1 mod 3
  • 3a + b = 2… давайте «mod 3 it»: 0 + b ≡ 2 mod 3), или b ≡ 2 mod 3

Противоречие, молодцы! B не может быть одновременно «1 mod 3» и «2 mod 3» - это так же абсурдно, как быть четным и нечетным одновременно!

Но есть одна проблема: числа вроде «1.5 ”не являются ни четными, ни нечетными - они не целые числа! Модульные свойства применяются к целым числам, поэтому мы можем сказать, что b не может быть целым числом .

Потому что на самом деле мы можем решить это уравнение:

  • (3a + 5b) - (3a + b) = 8 - 2
  • 4b = 6
  • б = 1,5
  • 3a + 1,5 = 2, поэтому 3a = 0,5 и a = 1/6

Не соблазняйтесь силой по модулю! Знайте его пределы: это применимо к целым числам.

Криптография

Игра с числами имеет очень важное применение в криптографии.Здесь слишком много, чтобы рассказывать о нем, но модуль по модулю используется в обмене ключами Диффи-Хеллмана - используется при настройке SSL-соединений для шифрования веб-трафика.

Обычный английский

Гики любят использовать технические слова в обычном контексте. Вы можете услышать «X совпадает с Y по модулю Z», что примерно означает «игнорирование Z, X и Y одинаковы».

Например:

  • b и B идентичны, по модулю капитализации
  • iTouch и iPad идентичны, по модулю размера;)

Вперед и вверх

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

В общем, я вижу несколько общих вариантов использования:

  • Редуктор диапазона: возьмите вход, мод N, и у вас есть число от 0 до N-1.
  • Назначение группы: возьмите вход, мод N, и вы пометите его как группу от 0 до N-1. Эта группа может быть согласована любым количеством сторон - например, разные серверы, которые знают N = 20, могут согласовать, к какой группе принадлежит ID = 57.
  • Вычислитель свойств: обрабатывайте числа в соответствии с их свойствами (четные, тройные и т. Д.) И вырабатывайте принципы, полученные на уровне свойств.

Я уверен, что упустил еще несколько десятков применений - не стесняйтесь комментировать ниже.Удачной математики!

Другие сообщения этой серии

  1. Методы сложения чисел от 1 до 100
  2. Переосмысление арифметики: визуальное руководство
  3. Quick Insight: интуитивное значение подразделения
  4. Quick Insight: вычитание отрицательных чисел
  5. Удивительные узоры в квадратных числах (1, 4, 9, 16…)
  6. Развлечение с модульной арифметикой
  7. Учимся считать (как избежать проблемы со столбами)
  8. Причудливое введение в системы счисления
  9. Еще один взгляд на простые числа
  10. Интуиция по золотому сечению
  11. Различные интерпретации числа ноль

Как использовать оператор% - Real Python

Python поддерживает широкий спектр арифметических операторов, которые вы можете использовать при работе с числами в вашем коде.Одним из таких операторов является оператор по модулю (% ), который возвращает остаток от деления двух чисел.

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

Математический модуль

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

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

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

Например, предположим, что вы хотите определить, сколько времени будет через девять часов после 8:00. В двенадцатичасовом формате вы не можете просто прибавить 9 к 8, потому что вы получите 17. Вам нужно взять результат, 17, и используйте мод , чтобы получить эквивалентное значение в двенадцатичасовом контексте:

  8 часов + 9 = 17 часов
17 мод 12 = 5
  

17 mod 12 возвращает 5 . Это означает, что девять часов после 8:00 - это 17:00. Вы определили это, взяв число 17 и применив его к контексту mod 12 .

Теперь, если подумать, 17 и 5 эквивалентны в контексте mod 12 . Если бы вы посмотрели на часовую стрелку в 5:00 и 17:00, она была бы в том же положении. В модульной арифметике есть уравнение, описывающее эту взаимосвязь:

Это уравнение гласит: « a и b равны по модулю n ». Это означает, что a и b эквивалентны в mod n , поскольку они имеют одинаковый остаток при делении на n .В приведенном выше уравнении n - это модуль для a и b . Используя значения 17 и 5 из предыдущих, уравнение будет выглядеть так:

Это гласит: « 17 и 5 равны по модулю 12 ». 17 и 5 имеют одинаковый остаток, 5 , при делении на 12 . Итак, в mod 12 числа 17 и 5 эквивалентны.

Подтвердить это можно с помощью деления:

  17/12 = 1 К 5
5/12 = 0 R 5
  

Обе операции имеют одинаковый остаток, 5 , поэтому они эквивалентны по модулю 12 .

Теперь это может показаться сложным математическим делом для оператора Python, но эти знания подготовят вас к использованию оператора по модулю в примерах далее в этом руководстве. В следующем разделе вы познакомитесь с основами использования оператора модуля Python с числовыми типами int и float .

Основы операторов Python по модулю

Оператор по модулю, как и другие арифметические операторы, может использоваться с числовыми типами int и float . Как вы увидите позже, его также можно использовать с другими типами, такими как math.fmod () , decimal.Decimal и вашими собственными классами.

Оператор по модулю с

int

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

>>>

  >>> 15% 4
3

>>> 17% 12
5

>>> 240% 13
6

>>> 10% 16
10
  

Будьте осторожны! Как и в случае с оператором деления (/), Python вернет ZeroDivisionError , если вы попытаетесь использовать оператор по модулю с делителем 0 :

>>>

  >>> 22% 0
ZeroDivisionError: целочисленное деление или по модулю нуля
  

Далее вы познакомитесь с использованием оператора по модулю с плавающей точкой .

Оператор по модулю с поплавком

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

>>>

  >>> 12,5% 5,5
1.5

>>> 17,0% 12,0
5.0
  

Альтернативой использованию с плавающей запятой с оператором по модулю является использование math.fmod () для выполнения операций по модулю над с плавающей запятой значений:

>>>

  >>> импорт математики
>>> математика.fmod (12.5, 5.5)
1.5

>>> math.fmod (8.5, 2.5)
1.0
  

Официальные документы Python предлагают использовать math.fmod () вместо оператора модуля Python при работе со значениями float , поскольку math.fmod () вычисляет результат операции по модулю. Если вы используете отрицательный операнд, вы можете увидеть разные результаты между math.fmod (x, y) и x% y . В следующем разделе вы более подробно исследуете использование оператора по модулю с отрицательными операндами.

Как и другие арифметические операторы, оператор по модулю и math.fmod () могут столкнуться с проблемами округления и точности при работе с арифметикой с плавающей запятой:

>>>

  >>> 13,3% 1,1
0,09999999999999964

>>> импорт математики
>>> math.fmod (13.3, 1.1)
0,09999999999999964
  

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

Оператор по модулю с отрицательным операндом

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

Как оказалось, способ, которым компьютеры определяют результат операции по модулю с отрицательным операндом, оставляет неоднозначность относительно того, должен ли остаток принимать знак делимого (делимое число) или знак делителя (число, на которое делится дивиденд).Разные языки программирования обрабатывают это по-разному.

Например, в JavaScript остаток примет знак делимого:

Остаток в этом примере, 2 , положительный, поскольку принимает знак дивиденда 8 . В Python и других языках остаток примет знак делителя:

Здесь вы можете видеть, что остаток -1 принимает знак делителя -3 .

Вам может быть интересно, почему остаток в JavaScript равен 2 , а остаток в Python равен -1 .Это связано с тем, как разные языки определяют результат операции по модулю. Языки, в которых остаток принимает знак делимого, используют следующее уравнение для определения остатка:

Это уравнение состоит из трех переменных:

  1. r - остаток.
  2. a - дивиденды.
  3. n - делитель.

trunc () в этом уравнении означает, что используется усеченное деление , которое всегда округляет отрицательное число до нуля.Для получения дополнительных пояснений см. Шаги операции по модулю ниже, используя 8 в качестве делимого и -3 в качестве делителя:

  r = 8 - (-3 * усечение (8 / -3))
r = 8 - (-3 * усечение (-2,666666666667))
r = 8 - (-3 * -2) # Округление в сторону 0
г = 8 - 6
г = 2
  

Здесь вы можете увидеть, как такой язык, как JavaScript, получает остаток 2 . Python и другие языки, в которых остаток принимает знак делителя, используют следующее уравнение:

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

  r = 8 - (-3 * этаж (8 / -3))
r = 8 - (-3 * этаж (-2.666666666667))
r = 8 - (-3 * -3) # Округление от 0
г = 8 - 9
г = -1
  

Здесь видно, что результат -1 .

Теперь, когда вы понимаете, откуда берется разница в остатке, вам может быть интересно, почему это важно, если вы используете только Python.Как оказалось, не все операции по модулю в Python одинаковы. В то время как модуль, используемый с типами int и float , принимает знак делителя, другие типы - нет.

Вы можете увидеть пример этого, сравнив результаты 8.0% -3.0 и math.fmod (8.0, -3.0) :

>>>

  >>> 8.0% -3
-1,0

>>> импорт математики
>>> math.fmod (8.0, -3.0)
2.0
  

математ.fmod () принимает знак делимого с использованием усеченного деления, тогда как float использует знак делителя. Позже в этом руководстве вы увидите другой тип Python, в котором используется знак делимого - десятичное число . десятичное число .

Оператор по модулю и

divmod ()

Python имеет встроенную функцию divmod () , которая внутренне использует оператор по модулю. divmod () принимает два параметра и возвращает кортеж, содержащий результаты деления по этажам и по модулю с использованием предоставленных параметров.

Ниже приведен пример использования divmod () с 37 и 5 :

>>>

  >>> divmod (37, 5)
(7, 2)

>>> 37 // 5
7

>>> 37% 5
2
  

Вы можете видеть, что divmod (37, 5) возвращает кортеж (7, 2) . 7 является результатом разделения этажей на 37 и 5 . 2 является результатом 37 по модулю 5 .

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

>>>

  >>> divmod (37, -5)
(-8, -3)

>>> 37 // -5
-8

>>> 37% -5
-3 # Результат имеет знак делителя
  

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

Приоритет оператора по модулю

Как и другие операторы Python, для оператора по модулю существуют особые правила, определяющие его приоритет при вычислении выражений. Оператор по модулю (% ) имеет тот же уровень приоритета, что и операторы умножения ( * ), деления (/) и деления по полу ( // ).

Взгляните на пример приоритета оператора по модулю ниже:

>>>

  >>> 4 * 10% 12 - 9
-5
  

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

  1. 4 * 10 вычисляется, что дает 40% 12 - 9 .
  2. 40% 12 оценивается, в результате получается 4 - 9 .
  3. 4 - 9 , в результате получается -5 .

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

>>>

  >>> 4 * 10% (12-9)
1
  

В этом примере сначала оценивается (12–9) , затем 4 * 10 и, наконец, 40% 3 , что равно 1 .

Оператор модуля Python на практике

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

Как проверить, четное или нечетное число

В этом разделе вы увидите, как можно использовать оператор по модулю, чтобы определить, является ли число четным или нечетным.Используя оператор по модулю с модулем 2 , вы можете проверить любое число, чтобы узнать, делится ли оно без остатка на 2 . Если оно делится без остатка, то это четное число.

Взгляните на is_even () , который проверяет, является ли параметр num четным:

  def is_even (число):
    вернуть число% 2 == 0
  

Здесь число% 2 будет равно 0 , если число четное, и 1 , если число нечетное.Проверка против 0 вернет логическое значение Истина или Ложь в зависимости от того, является ли номер четным.

Проверка на нечетные числа очень похожа. Чтобы проверить нечетное число, вы инвертируете проверку равенства:

  def is_odd (число):
    вернуть число% 2! = 0
  

Эта функция вернет Истина , если num% 2 не равно 0 , что означает, что остаток доказывает, что num - нечетное число.Теперь вам может быть интересно, можно ли использовать следующую функцию, чтобы определить, является ли num нечетным числом:

  def is_odd (число):
    вернуть число% 2 == 1
  

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

Вы можете понять, почему, на следующих примерах:

>>>

  >>> -3% 2
1

>>> 3% -2
-1
  

Во втором примере остаток принимает знак отрицательного делителя и возвращает -1 . В этом случае логическая проверка 3% -2 == 1 вернет False .

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

.
>>>

  >>> -2% 2
0

>>> 2% -2
0
  

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

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

Как запускать код с определенными интервалами в цикле

С помощью оператора Python по модулю вы можете запускать код через определенные промежутки времени внутри цикла. 15}", end = "")
если индекс% модуля == 0:
Распечатать()
Распечатать()

Этот код определяет split_names_into_rows () , который принимает два параметра. список_имён — это список имен, который следует разбить на строки. Модуль устанавливает модуль для операции, эффективно определяя, сколько имен должно быть в каждой строке. split_names_into_rows () будет перебирать name_list и начинать новую строку после достижения значения модуля .

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

>>>

  >>> names = ["Пикард", "Райкер", "Трой", "Крашер", "Ворф", "Дейта", "Ла Форж"]
>>> split_names_into_rows (имена)
---- Пикард ----- ----- Райкер ----- ----- Трой ------
---- Дробилка ---- ----- Worf ------ ----- Данные ------
--- Ла Форж ----
  

Как видите, список имен разделен на три строки, максимум по три имени в каждой строке.Модуль по умолчанию 3 , но вы можете указать любое число:

>>>

  >>> split_names_into_rows (имена, модуль = 4)
---- Пикард ----- ----- Райкер ----- ----- Трой ------ ---- Крашер ----
----- Ворф ------ ----- Данные ------ --- Ла Форж ----

>>> split_names_into_rows (имена, модуль = 2)
---- Пикард ----- ----- Райкер -----
----- Трой ------ ---- Дробилка ----
----- Worf ------ ----- Данные ------
--- Ла Форж ----

>>> split_names_into_rows (имена, модуль = 1)
---- Пикард -----
----- Райкер -----
----- Трой ------
----Дробилка----
----- Ворф ------
-----Данные------
--- Ла Форж ----
  

Теперь, когда вы увидели код в действии, вы можете разобрать, что он делает.Во-первых, он использует enumerate () для итерации по name_list , присваивая текущему элементу в списке name и значение счетчика index . Вы можете видеть, что необязательный аргумент start для enumerate () имеет значение 1 . Это означает, что счетчик индекса начнется с 1 вместо 0 :

  для индекса, имя в перечислении (name_list, start = 1):
  

Затем внутри цикла функция вызывает print () для вывода name в текущую строку.15 Синтаксис указывает print () выполнить следующие действия:

  • Выведите не менее 15 символов, даже если строка короче 15 символов.
  • Выровняйте строку по центру.
  • Заполните любое пространство справа или слева от строки символом дефиса ( - ).

Теперь, когда имя напечатано в строке, взглянем на основную часть split_names_into_rows () :

 , если индекс% модуля == 0:
    Распечатать()
  

Этот код берет индекс текущей итерации и, используя оператор по модулю, сравнивает его с модулем .Если результат равен 0 , то он может запустить код, зависящий от интервала. В этом случае функция вызывает print () , чтобы добавить новую строку, которая начинает новую строку.

Приведенный выше код является только одним примером. Использование шаблона index% modulus == 0 позволяет запускать другой код через определенные промежутки времени в ваших циклах. В следующем разделе вы немного углубитесь в эту концепцию и рассмотрите циклическую итерацию.

Как создать циклическую итерацию

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

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

  импортная черепаха
случайный импорт

def draw_with_cyclic_iteration ():
    colors = ["зеленый", "голубой", "оранжевый", "фиолетовый", "красный", "желтый", "белый"]

    turtle.bgcolor ("gray8") # Hex: # 333333
    turtle.pendown ()
    turtle.pencolor (random.выбор (цвета)) # Первый цвет случайный

    i = 0 # Начальный индекс

    в то время как True:
        i = (i + 1)% 6 # Обновить индекс
        turtle.pensize (i) # Установить размер pensize на i
        черепаха вперед (225)
        черепаха. правая (170)

        # Выберите случайный цвет
        если я == 0:
            turtle.pencolor (random.choice (цвета))
  

В приведенном выше коде используется бесконечный цикл для рисования повторяющейся формы звезды. Через каждые шесть итераций он меняет цвет пера. Размер пера увеличивается с каждой итерацией, пока i не будет сброшен до 0 .Если запустить код, то должно получиться что-то вроде этого:

Важные части этого кода выделены ниже:

  импортная черепаха
случайный импорт

def draw_with_cyclic_iteration ():
    colors = ["зеленый", "голубой", "оранжевый", "фиолетовый", "красный", "желтый", "белый"]

    turtle.bgcolor ("gray8") # Hex: # 333333
    turtle.pendown ()
    turtle.pencolor (random.choice (цвета))

    i = 0 # Начальный индекс

    в то время как True:
        i = (i + 1)% 6 # Обновить индекс
        черепаха.pensize (i) # Установить размер pensize на i
        черепаха вперед (225)
        черепаха. правая (170)

        # Выберите случайный цвет
        если я == 0:
            turtle.pencolor (random.choice (цвета))
  

Каждый раз при прохождении цикла i обновляется на основе результатов (i + 1)% 6 . Это новое значение i используется для увеличения . Компенсация с каждой итерацией. Как только i достигнет 5 , (i + 1)% 6 будет равно 0 , а i вернется к 0 .

Вы можете увидеть шаги итерации ниже для более ясного понимания:

  я = 0: (0 + 1)% 6 = 1
я = 1: (1 + 1)% 6 = 2
я = 2: (2 + 1)% 6 = 3
я = 3: (3 + 1)% 6 = 4
я = 4: (4 + 1)% 6 = 5
i = 5: (5 + 1)% 6 = 0 # Сброс
  

Когда i сбрасывается обратно на 0 , .pencolor изменяется на новый случайный цвет, как показано ниже:

 , если i == 0:
    turtle.pencolor (random.choice (цвета))
  

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

Как преобразовать единицы

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

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

  def convert_inches_to_feet (total_inches):
    дюймы = total_inches% 12
    футов = total_inches // 12

    print (f "{total_inches} дюймов = {футов} футов и {дюймов} дюймов")
  

Вот пример используемой функции:

>>>

  >>> convert_inches_to_feet (450)
450 дюймов = 37 футов и 6 дюймов
  

Как видно из выходных данных, 450% 12 возвращает 6 , то есть оставшиеся дюймы, которые не были равномерно разделены на футы.Результатом 450 // 12 является 37 , что представляет собой общее количество футов, на которое дюймы были равномерно разделены.

В следующем примере вы можете пойти немного дальше. convert_minutes_to_days () принимает целое число, total_mins , представляющее количество минут, и выводит период времени в днях, часах и минутах:

  def convert_minutes_to_days (total_mins):
    дней = total_mins // 1440
    extra_minutes = total_mins% 1440

    часы = extra_minutes // 60
    минут = дополнительные_минуты% 60

    print (f "{total_mins} = {дней} дней, {часов} часов и {минут} минут")
  

Разбив это, вы можете увидеть, что функция выполняет следующие функции:

  1. Определяет общее количество равномерно делимых дней с total_mins // 1440 , где 1440 - количество минут в дне
  2. Вычисляет любые дополнительных_минут оставшихся с total_mins% 1440
  3. Использует дополнительных_минут , чтобы получить равномерно делимые часа и любые дополнительные минуты

Вы можете увидеть, как это работает, ниже:

>>>

  >>> convert_minutes_to_days (1503)
1503 = 1 день, 1 час и 3 минуты

>>> convert_minutes_to_days (3456)
3456 = 2 дня, 9 часов и 36 минут

>>> convert_minutes_to_days (35000)
35000 = 24 дня, 7 часов и 20 минут
  

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

Примечание : Оба приведенных выше примера можно изменить, чтобы использовать divmod () , чтобы сделать код более лаконичным. Если вы помните, divmod () возвращает кортеж, содержащий результаты деления этажа и по модулю с использованием предоставленных параметров.

Ниже операторы деления по этажам и по модулю были заменены на divmod () :

  def convert_inches_to_feet_updated (total_inches):
    футы, дюймы = divmod (total_inches, 12)
    print (f "{total_inches} дюймов = {футов} футов и {дюймов} дюймов")
  

Как видите, divmod (total_inches, 12) возвращает кортеж, который распакован в футов и дюймов .

Если вы попробуете эту обновленную функцию, то получите те же результаты, что и раньше:

>>>

  >>> convert_inches_to_feet (450)
450 дюймов = 37 футов и 6 дюймов

>>> convert_inches_to_feet_updated (450)
450 дюймов = 37 футов и 6 дюймов
  

Вы получите тот же результат, но теперь код более лаконичный. Вы также можете обновить convert_minutes_to_days () :

  def convert_minutes_to_days_updated (total_mins):
    дней, extra_minutes = divmod (total_mins, 1440)
    часы, минуты = divmod (extra_minutes, 60)

    print (f "{total_mins} = {дней} дней, {часов} часов и {минут} минут")
  

При использовании divmod () функцию легче читать, чем в предыдущей версии, и она возвращает тот же результат:

>>>

  >>> convert_minutes_to_days (1503)
1503 = 1 день, 1 час и 3 минуты

>>> convert_minutes_to_days_updated (1503)
1503 = 1 день, 1 час и 3 минуты
  

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

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

Как определить, является ли число простым числом

В следующем примере вы посмотрите, как можно использовать оператор Python по модулю, чтобы проверить, является ли число простым числом . Простое число - это любое число, состоящее только из двух факторов: 1 и само себя. Примеры простых чисел: 2 , 3 , 5 , 7 , 23 , 29 , 59 , 83 и 97 .

Код ниже представляет собой реализацию для определения простоты числа с помощью оператора по модулю:

  def check_prime_number (число):
    если число <2:
        print (f "{число} должно быть больше или равно 2, чтобы быть простым.")
        возвращаться

    факторы = [(1, число)]
    я = 2

    в то время как я * я <= число:
        если num% i == 0:
            Factors.append ((i, num // i))
        я + = 1

    если len (факторы)> 1:
        print (f "{число} не простое число. Имеет следующие множители: {факторы}")
    еще:
        print (f "{num} - простое число")
  

Этот код определяет check_prime_number () , который принимает параметр num и проверяет, является ли это простым числом.Если это так, то отображается сообщение о том, что num - простое число. Если это не простое число, отображается сообщение со всеми множителями числа.

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

Прежде чем вы внимательно посмотрите на функцию, вот результаты с использованием некоторых других чисел:

>>>

  >>> check_prime_number (44)
44 не простое.Он имеет следующие факторы: [(1, 44), (2, 22), (4, 11)]

>>> check_prime_number (53)
53 - простое число

>>> check_prime_number (115)
115 не простое. Он имеет следующие факторы: [(1, 115), (5, 23)]

>>> check_prime_number (997)
997 - простое число
  

Углубившись в код, вы увидите, что он начинается с проверки, меньше ли num 2 . Простые числа могут быть не больше 2 . Если номер меньше 2 , то выполнение функции не требуется.Он будет print () сообщение и вернет :

 , если число <2:
    print (f "{число} должно быть больше или равно 2, чтобы быть простым.")
    возвращаться
  

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

Вот основная часть функции:

  факторов = [(1, num)]
я = 2

в то время как я * я <= число:
    если num% i == 0:
        Factors.append ((i, num // i))
    я + = 1
  

Здесь есть что распаковать, так что давайте рассмотрим это шаг за шагом.

Сначала создается список факторов с начальными факторами (1, num) . Этот список будет использоваться для хранения любых других найденных факторов:

Затем, начиная с 2 , код увеличивает i , пока не достигнет квадратного корня из num .На каждой итерации он сравнивает номер с i , чтобы увидеть, делится ли оно без остатка. Коду нужно только проверить квадратный корень из число включительно, потому что он не будет содержать никаких множителей выше этого:

  я = 2

в то время как я * я <= число:
    если num% i == 0:
        Factors.append ((i, num // i))
    я + = 1
  

Вместо того, чтобы пытаться определить квадратный корень из num , функция использует цикл while , чтобы проверить, не является ли i * i <= num .Пока i * i <= num , цикл не достиг квадратного корня из num .

Внутри цикла while оператор по модулю проверяет, делится ли num без остатка на i :

  факторов = [(1, num)]
i = 2 # Начать начальный индекс с 2

в то время как я * я <= число:
    если num% i == 0:
        Factors.append ((i, num // i))
    я + = 1
  

Если число делится без остатка на i , то i является множителем число , и кортеж множителей добавляется к списку множителей .

После завершения цикла и код проверяет, были ли найдены какие-либо дополнительные факторы:

  если len (факторы)> 1:
    print (f "{число} не простое число. Имеет следующие множители: {факторы}")
еще:
    print (f "{num} - простое число")
  

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

Как реализовать шифры

Оператор модуля Python может использоваться для создания шифров. Шифр - это тип алгоритма для выполнения шифрования и дешифрования входных данных, обычно текста. В этом разделе вы познакомитесь с двумя шифрами: шифром Цезаря и шифром Виженера .

Цезарь Шифр ​​

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

Шифр ​​Цезаря работает, взяв зашифровываемую букву и сдвинув ее на определенное количество позиций влево или вправо в алфавите. Какая бы буква ни была в этой позиции, используется как зашифрованный символ. Это же значение сдвига применяется ко всем символам в строке.

Например, если сдвиг был 5 , то A сдвинулся бы на пять букв вверх, чтобы стать F , B стал бы G и так далее.Ниже вы можете увидеть процесс шифрования текста REALPYTHON со сдвигом 5 :

В результате получается шифр WJFQUDYMTS .

Расшифровка шифра выполняется реверсированием сдвига. Процессы шифрования и дешифрования можно описать следующими выражениями, где char_index - это индекс символа в алфавите:

  encrypted_char_index = (char_index + shift)% 26
decrypted_char_index = (char_index - сдвиг)% 26
  

Этот шифр использует оператор по модулю, чтобы гарантировать, что при сдвиге буквы индекс будет перебираться, если будет достигнут конец алфавита.Теперь, когда вы знаете, как работает этот шифр, взгляните на его реализацию:

  строка импорта

def caesar_cipher (текст, сдвиг, дешифрование = False):
    если не text.isascii () или не text.isalpha ():
        Raise ValueError ("Текст должен быть в формате ASCII и не содержать чисел.")

    нижний регистр = строка.ascii_lowercase
    верхний регистр = строка.ascii_uppercase
    результат = ""

    если расшифровать:
        сдвиг = сдвиг * -1

    для символа в тексте:
        если char.islower ():
            index = lowercase.index (char)
            результат + = нижний регистр [(индекс + сдвиг)% 26]
        еще:
            index = прописные буквы.индекс (символ)
            результат + = верхний регистр [(индекс + сдвиг)% 26]

    вернуть результат
  

Этот код определяет функцию с именем caesar_cipher () , которая имеет два обязательных параметра и один необязательный параметр:

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

decrypt включен, чтобы можно было использовать одну функцию для обработки как шифрования, так и дешифрования. Эта реализация может обрабатывать только буквенные символы, поэтому функция сначала проверяет, является ли текст буквенным символом в кодировке ASCII:

  def caesar_cipher (text, shift, decrypt = False):
    если не text.isascii () или не text.isalpha ():
        Raise ValueError ("Текст должен быть в формате ASCII и не содержать чисел.")
  

Затем функция определяет три переменные для хранения строчных символов ASCII, прописных символов ASCII и результатов шифрования или дешифрования:

  нижний регистр = строка.ascii_lowercase # "abcdefghijklmnopqrstuvwxyz"
uppercase = string.ascii_uppercase # "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
результат = ""
  

Затем, если функция используется для расшифровки текста , она умножает сдвиг на -1 , чтобы сдвинуть назад:

  если расшифровать:
    сдвиг = сдвиг * -1
  

Наконец, caesar_cipher () перебирает отдельные символы в тексте и выполняет следующие действия для каждого символа :

  1. Проверьте, является ли char строчными или прописными буквами.
  2. Получить индекс из char в списках строчных или прописных ASCII.
  3. Добавьте сдвиг к этому индексу , чтобы определить индекс используемого зашифрованного символа.
  4. Используйте % 26 , чтобы убедиться, что сдвиг вернется к началу алфавита.
  5. Добавить зашифрованный символ к строке результата .

После того, как цикл завершает итерацию по значению текста , возвращается результат :

  для символа в тексте:
    если char.islower ():
        index = lowercase.index (char)
        результат + = нижний регистр [(индекс + сдвиг)% 26]
    еще:
        index = uppercase.index (символ)
        результат + = верхний регистр [(индекс + сдвиг)% 26]

вернуть результат
  

Вот еще раз полный код:

  строка импорта

def caesar_cipher (текст, сдвиг, дешифрование = False):
    если не text.isascii () или не text.isalpha ():
        Raise ValueError ("Текст должен быть в формате ASCII и не содержать чисел.")

    нижний регистр = строка.ascii_lowercase
    прописные буквы = строка.ascii_uppercase
    результат = ""

    если расшифровать:
        сдвиг = сдвиг * -1

    для символа в тексте:
        если char.islower ():
            index = lowercase.index (char)
            результат + = нижний регистр [(индекс + сдвиг)% 26]
        еще:
            index = uppercase.index (символ)
            результат + = верхний регистр [(индекс + сдвиг)% 26]

    вернуть результат
  

Теперь запустите код в Python REPL, используя текст meetMeAtOurHideOutAtTwo со сдвигом 10 :

>>>

  >>> caesar_cipher ("meetMeAtOurHideOutAtTwo", 10)
woodWoKdYebRsnoYedKdDgy
  

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

>>>

  >>> caesar_cipher ("woodWoKdYebRsnoYedKdDgy", 10, decrypt = True)
MeetMeAtOurHideOutAtTwo
  

Шифр ​​Цезаря - забавное занятие для введения в криптографию. Хотя шифр Цезаря редко используется сам по себе, он является основой для более сложных подстановочных шифров. В следующем разделе вы познакомитесь с одним из потомков шифра Цезаря, шифром Виженера.

Шифр ​​Виженера

Шифр ​​Виженера представляет собой полиалфавитный замещающий шифр. Для шифрования он использует разные шифры Цезаря для каждой буквы входящего текста. Шифр Виженера использует ключевое слово, чтобы определить, какой шифр Цезаря следует использовать для поиска буквы шифра.

Вы можете увидеть пример процесса шифрования на следующем изображении. В этом примере входной текст REALPYTHON зашифрован с использованием ключевого слова MODULO :

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

Ниже представлена ​​реализация шифра Виженера. Как вы увидите, оператор по модулю используется в функции дважды:

  строка импорта

def vigenere_cipher (текст, ключ, decrypt = False):
    если не text.isascii () или не text.isalpha () или не text.isupper ():
        Raise ValueError ("Текст должен быть в верхнем регистре ASCII без цифр.")

    uppercase = string.ascii_uppercase # "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    результаты = ""

    для i, char в перечислении (текст):
        current_key = ключ [i% len (ключ)]
        char_index = uppercase.index (символ)
        key_index = uppercase.index (текущий_ключ)

        если расшифровать:
            index = char_index - key_index + 26
        еще:
            index = char_index + key_index

        результаты + = верхний регистр [индекс% 26]

    вернуть результаты
  

Вы могли заметить, что подпись для vigenere_cipher () очень похожа на caesar_cipher () из предыдущего раздела:

  def vigenere_cipher (текст, ключ, decrypt = False):
    если не текст.isascii () или не text.isalpha () или не text.isupper ():
        Raise ValueError ("Текст должен быть в верхнем регистре ASCII без цифр.")

    верхний регистр = строка.ascii_uppercase
    результаты = ""
  

Основное отличие состоит в том, что вместо параметра shift , vigenere_cipher () принимает параметр key , который является ключевым словом, используемым во время шифрования и дешифрования. Еще одно отличие - добавление text.isupper () . На основе этой реализации vigenere_cipher () может принимать только вводимый текст в верхнем регистре.

Подобно caesar_cipher () , vigenere_cipher () выполняет итерацию по каждой букве входного текста, чтобы зашифровать или расшифровать его:

  для i, символ в перечислении (текст):
    current_key = ключ [i% len (ключ)]
  

В приведенном выше коде вы можете увидеть, как функция впервые использовала оператор по модулю:

  current_key = ключ [i% len (ключ)]
  

Здесь значение current_key определяется на основе индекса, возвращенного из i% len (key) .Этот индекс используется для выбора буквы из строки ключа , например, M из MODULO .

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

Для каждой буквы входящего текста несколько шагов определяют, как ее зашифровать или расшифровать:

  1. Определите char_index на основе индекса char внутри верхнего регистра .
  2. Определите key_index на основе индекса current_key внутри верхнего регистра .
  3. Используйте char_index и key_index , чтобы получить индекс для зашифрованного или дешифрованного символа.

Взгляните на эти шаги в приведенном ниже коде:

  char_index = uppercase.index (char)
key_index = uppercase.index (текущий_ключ)

если расшифровать:
    index = char_index - key_index + 26
еще:
    index = char_index + key_index
  

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

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

  результатов + = прописные буквы [индекс% 26]
  

index% 26 гарантирует, что индекс символа не превышает 25 , таким образом гарантируя, что он остается внутри алфавита. С помощью этого индекса зашифрованный или дешифрованный символ выбирается из прописных букв и добавляется к результатам .

Вот еще раз полный код шифра Виженера:

  строка импорта

def vigenere_cipher (текст, ключ, decrypt = False):
    если не text.isascii () или не text.isalpha () или не text.isupper ():
        Raise ValueError ("Текст должен быть в верхнем регистре ASCII без цифр.")

    uppercase = string.ascii_uppercase # "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    результаты = ""

    для i, char в перечислении (текст):
        current_key = ключ [i% len (ключ)]
        char_index = uppercase.index (символ)
        key_index = прописные буквы.индекс (текущий_ключ)

        если расшифровать:
            index = char_index - key_index + 26
        еще:
            index = char_index + key_index

        результаты + = верхний регистр [индекс% 26]

    вернуть результаты
  

Теперь запустите его в Python REPL:

>>>

  >>> vigenere_cipher (text = "REALPYTHON", key = "MODULO")
DSDFAMFVRH

>>> encrypted = vigenere_cipher (text = "REALPYTHON", key = "MODULO")
>>> печать (в зашифрованном виде)
DSDFAMFVRH

>>> vigenere_cipher (зашифровано, "MODULO", decrypt = True)
РЕАЛПИТОН
  

Отлично! Теперь у вас есть рабочий шифр Виженера для шифрования текстовых строк.

Python для расширенного использования оператора по модулю

В этом последнем разделе вы поднимете свои знания об операторах по модулю на новый уровень, используя их с десятичным числом . Десятичное число . Вы также узнаете, как добавить .__ mod __ () к своим пользовательским классам, чтобы их можно было использовать с оператором по модулю.

Использование оператора Python по модулю с десятичным числом

. Десятичное число

Ранее в этом руководстве вы видели, как можно использовать оператор по модулю с числовыми типами, такими как int и float , а также с math.fmod () . Вы также можете использовать оператор по модулю с Decimal из модуля decimal . Вы используете decimal.Decimal , когда вам нужно дискретное управление точностью арифметических операций с плавающей запятой.

Вот несколько примеров использования целых чисел с десятичным числом . Десятичное число и оператор по модулю:

>>>

  >>> импортировать десятичный
>>> десятичное.Десятичное (15)% десятичное.Десятичное (4)
Десятичный ('3')

>>> десятичный.Десятичный (240)% десятичный. Десятичный (13)
Десятичный ('6')
  

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

>>>

  >>> decimal.Decimal ("12,5")% decimal.Decimal ("5.5")
Десятичный ('1,5')

>>> decimal.Decimal ("13.3")% decimal.Decimal ("1.1")
Десятичный ('0,1')
  

Все операции по модулю с десятичным числом . Десятичное число возвращают те же результаты, что и другие числовые типы, за исключением случаев, когда один из операндов отрицательный.В отличие от int и float , но, как и math.fmod () , decimal. Decimal использует знак делимого для результатов.

Взгляните на приведенные ниже примеры, в которых сравниваются результаты использования оператора по модулю со стандартными значениями int и с плавающей запятой и с десятичным числом .Decimal :

>>>

  >>> -17% 3
1 # Знак делителя

>>> десятичное.Десятичное (-17)% десятичное.Десятичное (3)
Десятичный (-2) # Знак дивиденда

>>> 17% -3
-1 # Знак делителя

>>> десятичный.Десятичный (17)% десятичный. Десятичный (-3)
Десятичный ("2") # Знак дивиденда

>>> -13,3% 1,1
1.0000000000000004 # Знак делителя

>>> decimal.Decimal ("- 13,3")% decimal.Decimal ("1,1")
Десятичный ("- 0,1") # Знак дивиденда
  

По сравнению с math.fmod () , десятичное. Десятичное число будет иметь тот же знак, но точность будет другой:

>>>

  >>> decimal.Decimal ("- 13,3")% decimal.Decimal ("1,1")
Десятичный ("- 0,1")

>>> математика.fmod (-13,3, 1,1)
-0,09999999999999964
  

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

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

Использование оператора Python Modulo с настраиваемыми классами

Модель данных Python позволяет вам переопределить встроенные методы в объекте Python, чтобы настроить его поведение.В этом разделе вы узнаете, как переопределить .__ mod __ () , чтобы вы могли использовать оператор по модулю со своими собственными классами.

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

  класс Студент:
    def __init __ (я, имя):
        self.name = имя
        self.study_sessions = []

    def add_study_sessions (самостоятельно, сеансы):
        себя.study_sessions + = сеансы
  

Класс Student инициализируется параметром name и начинается с пустого списка study_sessions , который будет содержать список целых чисел, представляющих количество минут, изученных за сеанс. Также существует .add_study_sessions () , который принимает параметр sessions , который должен быть списком учебных сессий, который нужно добавить к study_sessions .

Теперь, если вы помните из раздела преобразования единиц выше, convert_minutes_to_day () использовал оператор Python по модулю для преобразования total_mins в дни, часы и минуты.Теперь вы реализуете модифицированную версию этого метода, чтобы увидеть, как можно использовать собственный класс с оператором по модулю:

  def total_study_time_in_hours (студент, всего_мин.):
    часы = total_mins // 60
    минут = total_mins% 60

    print (f "{student.name} изучил {часы} часы и {минуты} минуты")
  

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

  класс Студент:
    def __init __ (я, имя):
        себя.name = имя
        self.study_sessions = []

    def add_study_sessions (самостоятельно, сеансы):
        self.study_sessions + = сеансы

def total_study_time_in_hours (студент, total_mins):
    часы = total_mins // 60
    минут = total_mins% 60

    print (f "{student.name} изучил {часы} часы и {минуты} минуты")
  

Если вы загрузите этот модуль в Python REPL, то можете использовать его так:

>>>

  >>> jane = Студент ("Джейн")
>>> jane.add_study_sessions ([120, 30, 56, 260, 130, 25, 75])
>>> total_mins = сумма (джейн.study_sessions)
>>> total_study_time_in_hours (Джейн, total_mins)
Джейн занималась 11 часов 36 минут
  

Приведенный выше код распечатывает общее количество часов, которое изучила Джейн . Эта версия кода работает, но требует дополнительного шага суммирования study_sessions , чтобы получить total_mins перед вызовом total_study_time_in_hours () .

Вот как можно изменить класс Student , чтобы упростить код:

  класс Студент:
    def __init __ (я, имя):
        себя.name = имя
        self.study_sessions = []

    def add_study_sessions (самостоятельно, сеансы):
        self.study_sessions + = сеансы

    def __mod __ (сам, другое):
        возвратная сумма (self.study_sessions)% other

    def __floordiv __ (я, другой):
        возвратная сумма (self.study_sessions) // другое
  

Переопределив .__ mod __ () и .__ floordiv __ () , вы можете использовать экземпляр Student с оператором по модулю. Вычисление суммы () из study_sessions также включен в класс Student .

С этими изменениями вы можете использовать экземпляр Student непосредственно в total_study_time_in_hours () . Поскольку total_mins больше не нужен, вы можете удалить его:

  def total_study_time_in_hours (студент):
    часы = студент // 60
    минут = студент% 60

    print (f "{student.name} изучил {часы} часы и {минуты} минуты")
  

Вот полный код после изменений:

  класс Студент:
    def __init __ (я, имя):
        себя.name = имя
        self.study_sessions = []

    def add_study_sessions (самостоятельно, сеансы):
        self.study_sessions + = сеансы

    def __mod __ (сам, другое):
        возвратная сумма (self.study_sessions)% other

    def __floordiv __ (я, другой):
        возвратная сумма (self.study_sessions) // другое

def total_study_time_in_hours (студент):
    часы = студент // 60
    минут = студент% 60

    print (f "{student.name} изучил {часы} часы и {минуты} минуты")
  

Теперь, вызвав код в Python REPL, вы увидите, что он намного лаконичнее:

>>>

  >>> jane = Студент ("Джейн")
>>> Джейн.add_study_sessions ([120, 30, 56, 260, 130, 25, 75])
>>> total_study_time_in_hours (Джейн)
Джейн занималась 11 часов 36 минут
  

Переопределяя .__ mod __ () , вы позволяете своим пользовательским классам вести себя больше как встроенные числовые типы Python.

Заключение

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

Из этого руководства вы узнали, как:

  • Используйте оператор по модулю с int , float , math.fmod () , divmod () и decimal. Decimal
  • Вычислить результаты операции по модулю
  • Решите реальных проблем с помощью оператора по модулю
  • Переопределить .__ mod __ () в ваших собственных классах, чтобы использовать их с оператором по модулю

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

Как использовать функцию Excel MOD

Время в Excel - это дробное значение числа 1. Итак, 12 часов дня - это 12/24 = 0,5, 6:00 - это 24/6 = 0,25 и так далее. Итак, чтобы преобразовать время по заданному числу, вам нужно разделить количество часов на 24, чтобы получить требуемое ...

Excel обрабатывает даты и время, используя систему, в которой даты - это порядковые номера, а время - дробные значения.Например, 1 июня 2000 г. 12:00 представлено в Excel как число 36678,5, где 36678 - это дата ...

Даты Excel - это порядковые номера, а день эквивалентен числу 1. Это означает, что 1 час = 1/24 = 0,041666667. Другими словами, время в Excel - это просто дробные числа:

Время
Доля
Часы ...

Функция MOD возвращает остаток после деления. Если делитель равен 1, MOD вернет ноль для любого целого числа.Мы используем этот факт, чтобы построить простую формулу, которая проверяет результат MOD. Когда результат ...

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

В этом случае ...

Правила проверки данных срабатывают, когда пользователь добавляет или изменяет значение ячейки.Когда настраиваемая формула возвращает значение ИСТИНА, проверка проходит и вводные данные принимаются. Когда формула возвращает ЛОЖЬ, проверка не выполняется и ...

Первое, что делает эта формула, - сравнивает дату в столбце B с датой начала:

= ЕСЛИ (B4> = начало

Если дата не больше даты начала, формула возвращает ноль. Если дата больше или равна ...

Условное форматирование оценивается для каждой ячейки в диапазоне относительно левой верхней ячейки в выделенном фрагменте.В этом случае формула использует функцию MOD для проверки остатка от деления значения в каждом ...

Время в Excel - это дробное значение, равное 24 часам. Один час времени равен 1/24, а 1 минута времени составляет 1 / (24 * 60) = 1/1440.

В результате, если у вас есть десятичное значение для 6 часов и время в A1, вы можете добавить 6 часов из ...

Функция MOD выполняет операцию по модулю. Он принимает число и делитель и возвращает остаток после деления.В этой формуле мы вычитаем один результат MOD из другого.

Для первого МОДа мы используем число ...

.

Сложность вычисления количества часов между двумя моментами времени проистекает из времени, которое пересекает полночь. Это связано с тем, что время, которое пересекает полночь, часто имеет время начала позже, чем время окончания (то есть начало в ...

.

Функция ФИЛЬТР предназначена для фильтрации и извлечения информации на основе логических критериев.В этом примере цель состоит в том, чтобы извлечь каждую третью запись из показанных данных, но в данных нет информации о номере строки ...

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

MOD (C6-B6,1) // получаем время работы
MOD (E6-D6,1) // получаем время перерыва

Далее ...

Когда вы используете формулу для применения условного форматирования, формула вычисляется для каждой ячейки в выделенном фрагменте.В этом случае в формуле нет адресов, поэтому для каждой ячейки в данных ROW и ISEVEN ...

По сути, SUMPRODUCT используется для суммирования значений в строке, которые были «отфильтрованы» с использованием логики, основанной на MOD. Ключ в следующем:

MOD (COLUMN (B5: J5) -COLUMN (B5) + 1, K5) = 0

Этот фрагмент формулы использует функцию СТОЛБЕЦ для ...

.

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

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