Этот алгоритм может быть несколько видоизменен за счет следующего свойства:
Фактически величина
Пусть по этому алгоритму будет получено что
Рассмотрим на том же примере эту модификацию алгоритма.
Модифицированный метод расширения оснований модулярного кода
Действия | Модули | Цифры СОК | ||||
| | | | | ||
_ ха1 | 11 | 11 | 21 | 31 | 01 | А1=1 |
х-а1´ | 0 | 02 | 13 | 24 | 106 | |
_ х1а2 | 00 | 30 | 10 | 50 | А2=0 | |
х1-а2´ | 0 | 32 | 15 | 54 | ||
_ х2а3 | 11 | 51 | 91 | А3=1 | ||
х2-а3´ | 0 | 43 | 89 | |||
_ х3а4 | 55 | 65 | А4=5 | |||
х3-а4´ | 0 | 18 | | |||
x4 | 8 | |
Тогда
Тогда финальный шаг для определения цифры по новому основанию может быть записан как
Так как результат образования цифры в СОК по новому основанию
Пример. Пусть задана система оснований
объем диапазона
Найдем расширенное представление этого числа, добавляя модули
Для этого запишем нули в качестве неизвестных цифр и примем вышерассмотренный алгоритм расширения системы оснований.
Константы
Тогда получаем
Расширение модулярного кода по нескольким основаниям
Действия | Модули | Цифры СОК | |||||
| | | | | | ||
_ ха1 | 00 | 20 | 20 | 00 | 00 | 00 | а1=0 |
х-а1´ | 0 | 22 | 23 | 04 | 06 | 07 | |
_ х1а2 | 11 | 11 | 01 | 01 | 01 | а2=1 | |
х1-а2´ | 0 | 02 | 65 | 104 | 129 | ||
_ х2а3 | 00 | 20 | 70 | 40 | а3=0 | ||
х2-а3´ | 0 | 23 | 79 | 48 | |||
_ х3а4 | 66 | 86 | 66 | а4=6 | |||
х3-а4´ | 0 | 28 | 02 | ||||
x4 | 5 | 0 |
Цифры по основаниям
откуда получаем
Таким образом, число
Преимущества метода расширения системы основания с помощью перевода в ОПС состоит в том, что:
во-первых, все вычисления идут в параллельных каналах по определенным модулям;
во-вторых, не требуется вычисление большого количества дополнительных величин (необходимо наличие в памяти только констант
в-третьих, возможно получение расширенного представления числа сразу по нескольким дополнительным основаниям, что не влияет на быстродействие всей операции.
Программа №1
{SN+,E+}{Создание программного кода одинаково пригодного при работе на ПЭВМ с математическим сопроцессором или без него}
program Eyler;
uses crt;
type mas=array[1..20] of longint;