Дихотомический поиск множителя целых чисел произвольного размера
Рассмотрены вопросы формирования множителя целых чисел произвольного размера по алгоритму дихотомического поиска и анализа количества выполняемых компьютерных операций при определении скоростных свойств алгоритма.
Авторы
Тэги
Тематические рубрики
Предметные рубрики
В этом же номере:
Резюме по документу**
УДК 681.142.2 Дихотомический поиск множителя целых чисел произвольного размера 1 А. Ф. Деон 1 МГТУ им. <...> Н.Э. Баумана, Москва, 105005, Россия Рассмотрены вопросы формирования множителя целых чисел произвольного размера по алгоритму дихотомического поиска и анализа количества выполняемых компьютерных операций при определении скоростных свойств алгоритма. <...> Целью исследования является построение и 2 [ оценка быстродействия алгоритма дихотомического поиска множителя для целых десятичных чисел произвольного размера в байтовом представлении. <...> Ниже представлены функции: ByteBits( ) — для двоичного представления цифр числа, ByteBitPrint( ) — для печаISSN 2305-5626. <...> В дальнейшем для реализации
поиска дихотомического множителя потребуется функция SingleMultiply(
), выполняющая умножение целого числа b произвольного
размера на одноразрядное целое число e. <...> В функции SingleMultiply( ) параметр
int nb1 содержит количество байтов в числе b без учета знака числа. <...> Поскольку
в результате умножения количество цифр в итоге может
быть на единицу больше, то в начале функции предполагается, что
c[nb1] = 0, пока нет переноса старшей цифры. <...> =
4 min
Если на старшей цифре результата происходит перенос, то выполняется
одна операция в инструкции return nb1 + 1. <...> Такое вычитание выполняет
функция SingleSubtract( ), в которой параметр unsigned
char*s является указателем на массив побайтового результата вычитания,
параметр unsigned char* u задает массив уменьшаемого, параметр
unsigned char* v определяет массив вычитаемого, параметр int
nv определяет количество байтов в выровненных по длине массивах u
и v без учета знаков чисел:
int inline SingleSubtract( unsigned char* s, unsigned char* u,
unsigned char* v, int nv )
{ unsigned char tranzit = 0;
// для занимаемой единицы
ISSN 2305-5626. <...> На каждой итерации выполняются одна операция проверки
условия i < nv и две операции приращения i++. <...> Оценка общего количества операций в функции SingleSubtract( )
может быть минимальной или максимальной в зависимости от количества
занимаемых единиц при вычитании и от знака результата:
ISSN 2305-5626. <...> Дихотомический <...>
** - вычисляется автоматически, возможны погрешности
Похожие документы: