@ikutin

Остаток от деления в Python -1%5?

почему в python 1%5=1 а -1%5=4
  • Вопрос задан
  • 168 просмотров
Решения вопроса 2
По определению деления. Школа 3 класс.
Когда мы делим - мы отвечаем на вопрос "сколько раз от делимого нужно отнять делитель, чтобы получился 0". Остаток - это то что лишнее остаётся, что уже отнять мы не можем, не уйдя в минус.
Остаток всегда больше нуля.
При делении отрицательного числа на целое - мы наоборот прибавляем делитель к делимому, пока мы не получим 0 или положительное число.

Более формально это выглядит так:

Для любых целых чисел a и b, причём b != 0, найдётся единственная пара целых чисел q и r, таких что a = q * b + r, где 0 <= r < |b|.

a - делимое
b - делитель
q - частное (целое)
r - остаток

Вот и получается
1 = 0 * 5 + 1
-1 = -1 * 5 + 4

UPD: в python это не совсем так. На самом деле в Python действительно релизован mod, как говорит Rsa97, но у этой операции нет чёткого определения, по тому в разных языках оно реализовано по разному:
https://en.wikipedia.org/wiki/Modulo
q = floor(a/b)
r = a - b*q

В первом случае: q=0, r=1
Во втором: q=-1,r=4
(в принципе то же самое)
Интересное начинается, если делитель отрицательный:
Если взять a=1, b=-5, то тогда r=-1, q=-4
А вот при обычном делении с остатком: r=0, q=1
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что авторы питона реализовали математическую операцию modulo, а не остаток от деления.
А в математике X mod N всегда даёт значения в диапазоне [0, N).
https://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B0%D...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы