Как стать автором
Обновить

Комментарии 20

Но в стандартной библиотеке языка C++ длинные числа до сих пор не поддерживаются. Поэтому я решил написать её сам.

А можно воспользоваться уже готовым решением libgmp
Можно. Но так интереснее и познавательнее.
Даже у нас в университете на лабораторных по теоретико-числовым методам в криптографии студенты реализовывали длинную арифметику на С++ несколько качественнее и обширнее. Мне кажется для публикации должны использоваться лучшие решения в своей области. Разобрали бы вы хотябы реализацию алгоритмов в GMP, было бы отлично.
Сейчас половина людей начнут с вами спорить…
Пусть :)
— Нет тестов.
— Код на каком-то pastebin, а не в vcs.
Попробуйте использовать алгоритм быстрого преобразования Фурье для перемножения, и сложность будет не O(n^2), a O(n*lg(n))
почему бы не сделать основание системы счисления 2^32? многое бы упростилось
Собственно, ничего не мешает. Так было в оригинальной статье на e-maxx, но вы можете самостоятельно изменить одно число в исходнике.
Основание системы счисления на e-maxx выбрано не случайно, то что вы соглашаетесь с тем, что его можно поменять показывает, насколько плохо был проработан материал.
Одним числом дело не ограничится. По меньшей мере функции преобразования в строку и из строки станут сложнее.
В добавок к этому может случиться переполнение при сложении цифр числа. 10^9 +10^9 ещё помещается в тип данных int. А вот если основание системы исчисления будет больше 10^9, то уже может потребоваться 64 битный тип данных для сложения.
 if (l < 0) { this->_is_negative = true; l = -l; }


Может таки
l *= -1; 
?

UPD: Посмотрел, на пэйстбине так же, так что опечатка не только здесь…
А какая разница? Скомпилируется в одни и те же инструкции, скорее всего
Ой. Надо больше спать. И не исользовать, блин, «l», которая маленькая «L», и «1» в одном и том же месте! Особенно в таком шрифте вот почти неразличимы. Мне показалость, что там написано «L = -1;», что было бы странно, а поздним вечером мозг уже не ищет других вариантов интерпретации)
Извините, что ввел Вас в заблуждение :) привык в коротких методах именовать переменные подобным образом
НЛО прилетело и опубликовало эту надпись здесь
Во-первых, не понравился стиль изложения: «Я храню», «я не стал приводить», «я для симметрии ввел», «я избежал». Учитывая тот факт, что работа в большой степени основана на материалах из интернета, очень неуместно писать «Я». Да и в любой другой, даже полностью самостоятельно написанной работе не следует использовать это местоимение. Почитайте внимательно e-maxx и сравните их стиль изложения материала с вашим.

Во-вторых, отсутствуют оценки времени работы полученных алгоритмов в терминах O(n).
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории