Eujene
@Eujene
Айти или не айти?

Что здесь с математикой не так?

Здравствуйте.

Для программы потребовалось посчитать остаток от деления. Ничего сложного вроде бы, например 5%3=2 - логично.
Но почему тогда питон мне так считает:
-2%3=1
2%3=2
Какой тут может быть остаток?
  • Вопрос задан
  • 982 просмотра
Решения вопроса 2
@AVKor
И. М. Виноградов. Основы теории чисел. стр. 8.
Ответ написан
Комментировать
egens
@egens
Смотрите, операция A % B в Python возвращает такой X, что A – X должно делиться на B без остатка.

В первом случае (–2 % 3 = 1) –2–1 = –3 и это число кратно делится на 3 без остатка. B в этом случае выбирается из трех значений [0, 1, 2].

Также, в Python знак X совпадает со знаком B, то есть –2 % –3 = –2. –2 – (–2) = 0 и это число также кратно 3. Тут B выбирается из значений [0, -1, -2].

Других вариантов у вас нет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@Chupaka
Гуглите алгоритмы деления с остатком. Есть разные, в которых налагаются различные требования на знак остатка, например. Одни ЯП используют один алгоритм, другие — другой.
Ответ написан
Комментировать
NookieGrey
@NookieGrey
front-end developer, web-programmer
Всё логично, остаток всегда целое число -2/3=-1 и остаток 1, всегда берётся ближайшее меньше число и положительный остаток
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы