Информация об изменениях

Сообщение Re[3]: Разные базы для позиционной системы счисления от 13.02.2022 20:53

Изменено 13.02.2022 21:03 kov_serg

Re[3]: Разные базы для позиционной системы счисления
Здравствуйте, alpha21264, Вы писали:

A>Здравствуйте, kov_serg, Вы писали:


_>>Еще есть вариант использовать остатки от деления на простые числа (модульную арифметику)

_>>например берём простые числа 2,3,5,7,11,13=(p1,p2,p3,p4,p5,p6)
_>>и используем вектор (a1,a2,a3,a4,a5,a6)
_>>который складывается и умножается так

A>А теперь придумай, как в этой системе сделать деление и сравнение, и нобелевка у тебя в кармане.

Деление делается элементарно как и умножение, через обратное число
a*b=1 % p
b=a^(p-2) %p
b — обратное к a

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

для сравнения придётся приводить в обычную систему. т.к. тут нет привычного порядка как в часах какой час из 12 левее, а какой правее?

Например если у нас 3 простых числа, то число z можно представить в виде 3х чисел a1,a2,a3

a1=z%p1
a2=z%p2
a3=z%p3

А получить обратно z:

z= (a1*q1 + a2*q2 + a3*q3) % Q

А z можно уже сравнивать обычным способом

где Q=p1*p2*p3

коэф q:

q1=(b1*Q/p1) % Q = (b1*p2*p3) % Q
q2=(b2*Q/p2) % Q = (p1*b2*p3) % Q
q3=(b3*Q/p3) % Q = (p1*p2*b3) % Q

и коэф bi для вычисления qi

b1=(Q/p1)^(p1-2) % p1 = (p2*p3)^(p1-2) % p1
b2=(Q/p2)^(p2-2) % p2 = (p1*p3)^(p2-2) % p2
b3=(Q/p3)^(p3-2) % p3 = (p1*p2)^(p3-2) % p3

причем для q будут вот такие свойства
qi*qi % Q = qi
qi*qj % Q = 0
qi % pi = 1
qi % pj = 0
q1+q2+q3 % Q = 1
Re[3]: Разные базы для позиционной системы счисления
Здравствуйте, alpha21264, Вы писали:

A>Здравствуйте, kov_serg, Вы писали:


_>>Еще есть вариант использовать остатки от деления на простые числа (модульную арифметику)

_>>например берём простые числа 2,3,5,7,11,13=(p1,p2,p3,p4,p5,p6)
_>>и используем вектор (a1,a2,a3,a4,a5,a6)
_>>который складывается и умножается так

A>А теперь придумай, как в этой системе сделать деление и сравнение, и нобелевка у тебя в кармане.

Деление делается элементарно как и умножение, через обратное число
a*b=1 % p
b=a^(p-2) %p
b — обратное к a

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

для сравнения придётся приводить в обычную систему. т.к. тут нет привычного порядка как в часах какой час из 12 левее, а какой правее?

Например если у нас 3 простых числа, то число z можно представить в виде 3х чисел a1,a2,a3

a1=z%p1
a2=z%p2
a3=z%p3

А получить обратно z:

z= (a1*q1 + a2*q2 + a3*q3) % Q
или немного преобразовав так:
z = ( (a1-a3)*q1 + (a2-a3)*q2 + a3) % Q

А z можно уже сравнивать обычным способом

где Q=p1*p2*p3

коэф q:

q1=(b1*Q/p1) % Q = (b1*p2*p3) % Q
q2=(b2*Q/p2) % Q = (p1*b2*p3) % Q
q3=(b3*Q/p3) % Q = (p1*p2*b3) % Q

и коэф bi для вычисления qi

b1=(Q/p1)^(p1-2) % p1 = (p2*p3)^(p1-2) % p1
b2=(Q/p2)^(p2-2) % p2 = (p1*p3)^(p2-2) % p2
b3=(Q/p3)^(p3-2) % p3 = (p1*p2)^(p3-2) % p3

причем для q будут вот такие свойства
qi*qi % Q = qi
qi*qj % Q = 0
qi % pi = 1
qi % pj = 0
q1+q2+q3 % Q = 1