Похоже аффтар из принципа не читает книги по общей алгебре.
Следует срочно познакомиться с базовыми понятиями: группа,
кольцо, поле и изучить свойства этих алгебраических структур.
То, что мутит автор - это группа из N натуральных чисел с одной
бинарной операцией сложения и с нейтральным элементом по
сложению "N". Сложение в группе по сути - сумма по модулю N
с небольшой поправкой, что если остаток = 0, он меняется на N:
function Add(X,Y);
begin
Result:= (X + Y) mod N;
if Result = 0 then Result:= N;
end;
Вычитание - это то же сложение только с аддитивно обратным
вычитателя, который дополняет вычитатель до нейтрального N.
function Sub(X,Y);
begin
Result:= (X + N - Y) mod N;
if Result = 0 then Result:= N;
end;
Пусть для примера N = 10:
Add(2, 10) = (2 + 10) mod 10 = 2
Sub(4, 6) = (4 + 10 - 6) mod 10 = 8
Add(10,10) = 10, т.к. (10 + 10) mod 10 = 0
Sub(10,10) = 10, т.к. (10 + 10 - 10) mod 10 = 0
Sub(5, 5) = 10, т.к. (5 + 10 - 5) mod 10 = 0
Модулярной арифметике как минимум 50 лет, если не больше.
Последний раз редактировалось Paul Kellerman; 16.11.2015 в 12:45.
|