День добрый. Подскажите, как правильно считать подобные примеры:
-1284 mod 17
Если верить примеру из учебника (Элементы абстрактной и компьютерной алгебры), то ответ будет 8, а если калькулятору Windows в режиме программиста, то ответ -9
-50 mod 11 = 5 (учебник)
-50 mod 11 = -6 (калькулятор)
Это, в общем-то, одно и то же. Просто нужно договориться, какому множеству должен принадлежать остаток.
В математике чаще всего
берётся из множества
, но могут быть варианты (например, часто используется наименьший по модулю остаток).
Процессор компьютера при целочисленном делении, как правило, даёт неотрицательный остаток при неотрицательном
и неположительный - при неположительном.
Кажется нашел нужный мне алгоритм
Если надо найти zz mod pp , где zz<0 и zz mod pp <>0, то идем по такому алгоритму
Код:
pp - (ABS(zz) - pp * (ABS(zz) div pp)) mod pp
Сложно. Мне кажется, будет быстрее, если вычислить zz Mod pp, и если получится отрицательная величина, прибавить pp. Впрочем, надо смотреть, что там компилятор сделает из этого алгоритма.