Деление с остатком

Материал из Википедии — свободной энциклопедии
(перенаправлено с «Остаток от деления»)
Перейти к: навигация, поиск

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

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

Содержание

Определение [править]

Натуральные числа [править]

Разделить целое число a\, на натуральное число 0 < b < a\, с остатком означает представить его в виде:

a = b\,q + r,\quad 0 \leqslant r < b \quad (q \in \mathbb{Z},\,r \in \mathbb{Z}).

При этом q\, называется неполным частным, а r\, — остатком от деления a на b.

Пример:

  • При делении с остатком положительного числа a = 78 на b = 33 получаем неполное частное q = 2 и остаток r = 12. Проверка: 78 = 33 \cdot 2 + 12.

Обобщения [править]

Целые числа [править]

Формула

q = a - \lfloor a/b \rfloor\cdot b

даёт обобщение понятия остатка на случай деления целого числа a на целое число b. При этом выполняется соотношение a = p b+q и неравенство 0\leqslant q<|b|.

Примеры:

  • так как остатком называется неотрицательное число, которое в сумме с произведением неполного частного и делителя даёт делимое, то математически верным будет следующее решение :
При делении с остатком отрицательного числа a = -78 на b = 33 получаем неполное частное q = -3 и остаток r = 21.  Проверка: -78 = 33 \cdot (-3) + 21. 

  • При делении с остатком положительного числа a = 17 на b = 33 получаем неполное частное q = 0 и остаток r = 17. Проверка: 17 = 33 \cdot 0 + 17.

Вещественные числа [править]

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

Формально:

если a,b\in \mathbb{R}, b\ne 0, то ~a = p b+q, где 0\leqslant q< |b|

Пример:

~ 7{,}9 : 2{,}1 = 3 (остаток 1,6)

Многочлены [править]

При делении двух полиномов f(x) и g(x) степень остаточного полинома должна быть строго меньше степени делителя:

f(x) = q(x) g(x) + r(x) \quad, причём \quad \deg(r) < \deg(g).

Пример:

\frac{2x^2 + 4x + 5}{x+1} = 2x + 2 (остаток 3), так как 2x² + 4x + 5 = (x + 1)(2x + 2) + 3

В программировании [править]

Операция вычисления остатка в различных языках программирования
Язык Оператор Знак результата
ActionScript % Делимое
Ada mod Делитель
rem Делимое
ASP Mod Не определено
Си (ISO 1990) % Не определено
Си (ISO 1999) % Делимое[источник не указан 466 дней]
C++ % Не определено[1]
C# % Делимое
ColdFusion MOD Делимое
Common Lisp mod Делитель
rem Делимое
Delphi mod Делимое
Eiffel \\ Делимое
Microsoft Excel =MOD() (англ. версия)
=ОСТАТ() (рус. версия)
Делитель
Euphoria remainder Делимое
FileMaker Mod Делитель
Fortran mod Делимое
modulo Делитель
GML (Game Maker) mod Делимое
div Делитель
J |~ Делитель
Java % Делимое[2]
JavaScript % Делимое
Lua % Делитель
Mathematica Mod Делитель
MATLAB mod Делитель
rem Делимое
MySQL MOD
%
Делимое
Objective Caml mod Не определено
Pascal mod Делимое
Perl % Делитель
PHP % Делимое
PL/I mod Делитель (ANSI PL/I)
Prolog (ISO 1995) mod Делитель
Python % Делитель
QBasic MOD Делимое
R %% Делитель
RPG %REM Делимое
Ruby % Делитель
Scheme modulo Делитель
SenseTalk modulo Делитель
rem Делимое
Tcl % Делитель
Verilog (2001) % Делимое
VHDL mod Делитель
rem Делимое
Visual Basic Mod Делимое

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

Обозначения операции взятия остатка в различных языках программирования представлены в таблице справа. Например, в Паскале операция mod вычисляет остаток от деления, а операция div осуществляет целочисленное деление, при котором остаток от деления отбрасывается:

78 mod 33 = 12
78 div 33 = 2

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

(b+(a mod b)) mod b

См. также [править]

Примечания [править]

  1. ««ISO/IEC 14882:2003 : Programming languages -- C++»», 5.6.4: International Organization for Standardization, International Electrotechnical Commission, 2003 . «the binary % operator yields the remainder from the division of the first expression by the second. …. If both operands are nonnegative then the remainder is nonnegative; if not, the sign of the remainder is implementation-defined».
  2. К. Арнолд, Дж. Гослинг, Д. Холмс Язык программирования Java. — 3-е изд. — М., СПб., Киев: Вильямс, 2001. — С. 173—174. — ISBN 5-8459-0215-0