Счетчик просмотров45

Деление // и остаток % с отрицательными

Оглавление
Три способа поделитьГлавное правило: // округляет внизОстаток % берёт знак делителяЛовушка: int(a / b) — это не a // bdivmod — частное и остаток за один вызовПример с ЕГЭ: задание 5, работа с остаткамиПример с ЕГЭ: задание 25, перебор делителей

Три способа поделить

ОперацияПримерРезультат
/ — обычное деление7 / 23.5 (всегда float)
// — целочисленное7 // 23
% — остаток7 % 21

Пока числа положительные, всё интуитивно. Отрицательные числа ломают привычку — и именно на этом теряют баллы.

Главное правило: // округляет вниз

// — это не «отбрасывание дробной части», а округление в меньшую сторону, к минус бесконечности:

ВыражениеРезультатПочему
7 // 233.5 вниз → 3
-7 // 2-4−3.5 вниз → −4, а не −3
7 // -2-4−3.5 вниз → −4
-7 // -233.5 вниз → 3

В Паскале и C++ деление отрицательных работает иначе — там дробная часть просто отбрасывается и получается −3. Если решаешь задачу «как в учебнике», а проверяешь на Python, ответы разойдутся.

Остаток % берёт знак делителя

Баннер статьи
PYTHON-КОД
1
2

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

PYTHON-КОД
1

Связь операций всегда одна: a == (a // b) * b + a % b. Проверим: (-7 // 2) * 2 + (-7 % 2) = -4 * 2 + 1 = -7.

Ловушка: int(a / b) — это не a // b

Самая частая ошибка — считать целую часть через обычное деление:

PYTHON-КОД
1
2

int() отбрасывает дробную часть, то есть округляет к нулю, а // — вниз. Для положительных чисел они совпадают, для отрицательных — нет.

Вторая беда int(a / b) — потеря точности на больших числах, а в заданиях 25 и 27 числа как раз большие:

PYTHON-КОД
1
2

Вывод простой: если нужно целое — пиши `//`, а не `int(a / b)`.

divmod — частное и остаток за один вызов

PYTHON-КОД
1
2

Удобно там, где нужны обе величины сразу — например, при разборе числа на цифры или переводе в другую систему счисления.

Пример с ЕГЭ: задание 5, работа с остатками

Формулировка: «На вход алгоритма подаётся натуральное число N. Алгоритм находит сумму цифр числа и приписывает её справа. Найдите наименьшее N > 9, при котором результат делится на 9».

Здесь % достаёт очередную цифру, а // укорачивает число:

PYTHON-КОД
1
2
3
4
5
6
7
8
9
10

 

Ответ — 18. Перебор идёт по возрастанию, поэтому первое подходящее N и есть наименьшее; break нужен, иначе выведется всё подряд.

Пример с ЕГЭ: задание 25, перебор делителей

Проверка делимости — это %, а сам делитель ищется через //:

PYTHON-КОД
1
2
3
4
5
6

 

Оцените статью

Другие статьи по предмету

Другие статьи не найдены