Я возился с операцией по модулю в python, и я понимаю, что он вернет остаток.
Но что, если первое число меньше второго?
например
2% 5 ответ 2.
Как это работает?
2/5 = .4
Я возился с операцией по модулю в python, и я понимаю, что он вернет остаток.
Но что, если первое число меньше второго?
например
2% 5 ответ 2.
Как это работает?
2/5 = .4
Помогает ли это
22 % 5 = 2
17 % 5 = 2
12 % 5 = 2
7 % 5 = 2
2 % 5 = 2
Может быть, это
22 / 5 = 4 + 2/5
17 / 5 = 3 + 2/5
12 / 5 = 2 + 2/5
7 / 5 = 1 + 2/5
2 / 5 = 0 + 2/5
5 переходит в 2 нулевых раза.
5*0 = 0
2-0 = 2.
Ответ - 2.
2, разделенное на 5 (целочисленное деление), равно 0 с остатком 2.
2 = 0 x 5 + 2
На самом деле за ужином легко вычислить результаты по модулю, когда первое число меньше. Результат всегда равен первому (меньшему) числу.
3 % 5 = 3
5 % 10 = 5
78 % 112 = 78
Попробуй сам.
например 2% 5 ответ 2. Как это работает? 2/5 = 0,4!
Modulo по своей сути дает целочисленный результат, тогда как деление может быть целым числом или операцией с плавающей запятой. Ваше наблюдение, что 2/5 равно 0,4, указывает на то, что вы думаете в терминах с плавающей запятой. В этом случае .4 само по себе является остатком, выраженным по-другому. Целая часть «0,4» - это «0», а оставшаяся часть - «.4». Остальная часть операции целочисленного деления - это то же самое, что и дробная (или «десятичная», в разговорной терминологии) часть операции с плавающей запятой, только выраженная по-другому.
Дробная часть вашего примера, 0,4, может быть выражена как 0,4 или как 2/5 (две пятых); в любом случае это одно и то же. Обратите внимание, что когда оно записано как 2/5, знаменатель (делитель) дробной части совпадает со знаменателем (делителем) исходной задачи, а числитель (делимое) дробной части - это то, что называется «остаток» в целочисленном делении. Как ни крути, дробная часть частного и остаток представляют одно и то же ( часть дивиденда, которая не может быть равномерно разделена делителем), просто выраженная по-другому.
Если первое число меньше, то ответом снова будет это первое число.
Поскольку второе число больше, оно «переходит» в первое число ноль раз, а остаток - это целое первое число.
edit: повторно посещая эту ветку, я должен был вспомнить, для чего был этот оператор. Я сослался на эту другую ветку здесь:
Как узнать, когда использовать оператор модуля
Вы можете думать об этом как о 2/5 = 0 с остатком 2 от 5.
Числитель в остатке - это ваш ответ по модулю, независимо от того, что, независимо от того, больше или меньше числитель, чем знаменатель.
12 % 5 = 2 , because 12 / 5 = 2 and **2**/5
9 % 2 = 1 , because 9 / 2 = 4 and **1**/2
В этом может быть больше смысла.
5 % 89 = 5 , because 5 / 89 = 0 and **5**/89
5 % 365 = 5 , because 5 / 365 = 0 and **5**/365
5 % 6 = 5 , because 5 / 6 = 0 and **5**/6
Также следует отметить, что если первое число (a) является отрицательным числом, ответ всегда будет разницей второго числа с первым числом (n-a).
Пример: a% n
Если оба числа были отрицательными, ответом всегда будет отрицательное число, равное меньшему числу.
a%b = a/b=c,
c*b=d,
a-d=modulo;
Это то, что делает python, модифицируя два числа или около того, я думаю. По модулю между меньшим числом и большим числом всегда будет меньшее число.
Нет числа, которое умножило бы 5
, чтобы приблизить вас к 2
.
Другими словами, x
должен быть 0
, чтобы удовлетворять уравнению: 5*x + r = 2
.
Чтобы понять модульную арифметику, я предлагаю вам зайти в Khan Academy и прочитать их пост об этом. У них также есть интерактивные практические вопросы на той же странице. Вот ссылка: https://www.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/what-is-modular-arithmetic
Короче:
Используйте следующее уравнение:
A = BQ + R
A - это дивиденд
B - это делитель
Q - это частное
R - это остаток, результат по модулю.
Q = (A/B)
Имейте в виду, что Q всегда идет до ближайшего наименьшего целого числа. Итак, если Q = 0,2, то Q = 0,0. Если Q = -1,2, то Q = -2,0.
Если в Q нет десятичных знаков, ваш окончательный ответ - 0 (R = 0).
На ваш вопрос:
Q = (2/5) = 0.4, so Q = 0.
Вставьте это в 'A = BQ + R':
2 = 5*0 + R
So, R = 2.
Надеюсь это поможет. Как я уже сказал, вы можете прочитать больше об Академии Хана. Вот ссылка: https://www.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/what-is-modular-arithmetic
В случае, например, 2% 5 = 2: в реальном математическом остатке равен 0, а частное - 0,4, но в программировании он видит, что 2 меньше 5 означает 5 * 1 = 5, поэтому он становится низким и просто делит его на 0, чтобы он стал меньше, что равно 0. Следовательно, остаток становится 2, потому что 2-0 = 2;)
Как продолжение для нас, людей, не обладающих математическим мозгом, я думаю, что отчасти проблема в понимании этого заключается в том, что концепция часто упрощается, как то, что остается, когда вы делите x на y, что, когда x меньше, ничто, иначе 0. Я мог бы сказать, что более надежный способ
So in 2 (as x) % 5 (as y):
Modulo работает, отдавая остаток после деления, одна вещь, для которой он полезен, - это
-поиск четного числа или нет
Пример кода:
// 4 % 2 means "2 divided by 2 is what, and what is the remainder? if I have a remainder, return it or else return 0"
if(4 % 2 == 0) {
alert("2 is even");
} else {
alert("2 is odd");
}
Таким образом, если остаток 4% 2 равен 0, он четный или нечетный.
0 < a < b
... если a
отрицательно, то у вас проблемы.
- person Matthew Scharley; 08.10.2009
12 % 5 = 2
потому что5 x 2 = 10
и12 - 10 = 2
- person spencer.sm   schedule 22.01.20172 % 5 = 2
потому что5 x 0 = 0
и2 - 0 = 2
- person spencer.sm   schedule 22.01.2017